用 Python 找出可以将多少个盒子放入仓库的程序

假设,我们有两个包含整数的数组。一个列表包含一些单位宽度框的高度,另一个数组包含仓库中房间的高度。房间编号为 0...n,房间的高度在数组 godown 中各自的索引中提供。我们必须找出可以推入仓库的箱子数量。有几件事必须牢记,

  • 箱子不能叠在一起。

  • 可以更改框的顺序。

箱子从任何一侧放入仓库,可以从左侧或右侧。如果一个盒子比房间的高度高,那么这个盒子和它右边的所有盒子都不能被推入仓库。

因此,如果输入类似于 box = [4, 5, 6], godown = [4, 5, 6, 7],那么输出将是 3 作为输入给出的所有三个框都可以放入 godown。

示例(Python)

让我们看看以下实现以获得更好的理解 -

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