检查是否能垒起方块的Python程序
假设我们有一个包含n个不同方块大小的数组nums,它们被水平放置。我们要垒起一个垂直的方块堆。新的方块应该满足以下条件:
- 如果第i个方块在第j个方块上面,则第j个方块的侧面长度必须大于或等于第i个方块的侧面长度。
当我们垒起垂直堆时,我们只能从左边或右边取方块,而不能从中间取。我们必须检查我们能否将它们堆起来。
因此,如果输入为nums=[1,2,3,7,8],则输出为True,因为我们可以从右到左取出方块,成功地将它们垒起来。
为了解决这个问题,我们将按以下步骤进行-
- n:=nums的大小
- d:=从nums的元素制作一个双向队列
- 标志:=True
- prev:=0
- 当d不为空时,执行以下操作
- first:=d[0]
- last:=d[n-1]
- 如果prev不等于0且(first> prev或last> prev),那么
- 标志:=False
- 跳出循环
- 如果first≥last,则
- prev:=d的left item,并将其从d中删除
- 否则,
- prev:=d的last item,并将其从d中删除
- 如果标志为True,则
- 返回True
- 否则,
- 返回False
例子
看一下以下实现,以获得更好的理解