假设,我们有两个包含整数的数组。一个列表包含一些单位宽度框的高度,另一个数组包含仓库中房间的高度。房间编号为 0...n,房间的高度在数组 godown 中各自的索引中提供。我们必须找出可以推入仓库的箱子数量。有几件事必须牢记,
箱子不能叠在一起。
可以更改框的顺序。
箱子从任何一侧放入仓库,可以从左侧或右侧。如果一个盒子比房间的高度高,那么这个盒子和它右边的所有盒子都不能被推入仓库。
因此,如果输入类似于 box = [4, 5, 6], godown = [4, 5, 6, 7],那么输出将是 3 作为输入给出的所有三个框都可以放入 godown。
让我们看看以下实现以获得更好的理解 -
def solve(boxes, godown): boxes.sort(reverse = True) l, r = 0, len(godown) - 1 bi, ret = 0, 0 while bi < len(boxes) and l <= r: if godown[l] > godown[r]: if boxes[bi] <= godown[l]: ret += 1 l += 1 else: if boxes[bi] <= godown[r]: ret += 1 r -= 1 bi += 1 return ret print(solve([4, 5, 6], [4, 5, 6, 7]))
[4, 5, 6], [4, 5, 6, 7]输出结果
3