Falling Squares(掉落的方块)问题错误实现逻辑排查
逻辑疏漏点
- 只判断当前方块和前一个掉落方块的重叠,完全没有考虑更早落地的所有方块。你只存储了上一个方块的坐标和边长,没有留存所有已落地方块的位置、高度信息,只要当前方块和更早的方块重叠但和上一个不重叠,逻辑就会完全失效。
- 重叠判定规则错误。两个X轴区间存在重叠的正确条件是
当前方块左边界 < 已有方块右边界 且 当前方块右边界 > 已有方块左边界,你只判断了当前左边界 < 前一个方块的右边界,如果当前方块完全处于前一个方块的左侧,也会被误判为重叠。 - 重叠后的高度计算逻辑错误。就算当前方块和已有方块重叠,也不是直接叠加全局最大高度,而是要先找到当前方块覆盖的所有区间里的最大高度,再加上自身边长才是当前方块的落地高度。如果全局最大高度对应的方块不在当前方块的覆盖范围内,是不能叠加的。
- 没有存储每个方块落地后的实际高度。你只更新了前一个方块的边长,没有记录每个方块落地后的真实高度、左右边界,后续遍历根本无法正确计算重叠区域的最大高度。
举个简单的反例:输入positions = [[0,1],[2,2],[1,1]],正确输出是[1,2,2],你的代码运行后输出是[1,2,3],结果完全不符合预期。
内容的提问来源于stack exchange,提问作者Jerry
相关产品推荐
相关产品推荐

