在Python中查找有多少个箱子可以放入仓库的程序
假设,我们有两个包含整数的数组。一个数组包含单位宽度箱子的高度,另一个数组包含仓库中房间的高度。房间编号为0…n,并且在数组godown的相应索引中提供了房间的高度。我们必须找出可以推入仓库的盒子数量。有几件事情必须记住,
- 盒子不能相互放置。
-
盒子的顺序可以更改。
箱子可以从任何一侧放进仓库,可以从左边或右边放置。如果一个盒子比房间的高度高,那么盒子和所有右侧的盒子都不能推入仓库。
因此,如果输入如下:boxes = [4, 5, 6],godown = [4, 5, 6, 7],则输出将是3。输入的所有三个箱子都可以放入仓库。
为了解决这个问题,我们将按照以下步骤进行 –
- 将列表中的箱子按降序排列
-
l:= 0
-
r:= godown的大小-1
-
bi:= 0
-
返回:= 0
-
当bi < boxes的大小且l <= r时,执行以下操作
- 如果godown [l]> godown [r],则
- 如果boxes [bi] <= godown [l],那么
-
返回:=返回+ 1
-
l:= l + 1
-
否则,
-
如果boxes [bi] <= godown [r],那么
- 返回值:=返回值+ 1
-
r:= r-1
-
bi:= bi + 1
- 如果godown [l]> godown [r],则
-
返回返回值
更多Python相关文章,请阅读:Python 教程
示例(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