Python程序:找出视野更好的建筑物
假设我们得到一个数组,其中包含不同建筑物的高度。这些建筑物位于一条线上,如果一座建筑物不被另一座更高的建筑物遮挡,则该建筑物视野更好。因此,提供包含高度的数组,我们必须找出那些没有其他更高建筑物遮挡视野的建筑物。返回满足条件的数组索引。
因此,如果输入类似于height = [5, 6, 8, 7],则输出将为[2, 3]。数组索引0和1中的建筑物被索引2处的建筑物遮挡。索引2和3处的建筑物没有被遮挡,因为位置2处较高的建筑物位于位置3处较低建筑物的后面。
为了解决这个问题,我们将遵循以下步骤:
- res := 一个新的列表
- h := 0
- 对于范围(高度大小 - 1) 到 -1 的 i,递减 1,执行:
- 如果heights[i] > h,则
- 在res的末尾插入i
- h := heights[i]
- 如果heights[i] > h,则
- 返回列表res的反转
示例
让我们看看下面的实现以更好地理解:
def solve(heights): res, h = [], 0 for i in range(len(heights) - 1, -1, -1): if heights[i] > h: res.append(i) h = heights[i] return res[::-1] print(solve([5, 6, 8, 7]))
输入
[5, 6, 8, 7]
输出
[2, 3]
广告