用 Python 编写程序找出视野更好的建筑物
pythonserver side programmingprogramming更新于 2025/12/9 21:00:17
假设,我们有一个包含不同建筑物高度的数组。建筑物位于一条线上,如果建筑物没有被另一座更高的建筑物遮挡,则其视野更好。因此,给定包含高度的数组,我们必须找出没有其他更高建筑物遮挡视野的建筑物。索引从满足条件的数组中返回。
因此,如果输入为高度 = [5, 6, 8, 7],则输出将为 [2, 3]。数组索引 0 和 1 中的建筑物被索引 2 处的建筑物遮挡。索引 2 和 3 处的建筑物没有被遮挡,因为位置 2 处的较高建筑物位于位置 3 处的较矮建筑物后面。
为了解决这个问题,我们将遵循以下步骤 −
- res := a new list
- 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]
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

