用 Python 编写程序,查找可以看到大海的建筑物
pythonserver side programmingprogramming更新于 2026/1/5 18:20:17
假设我们有一个不同建筑物高度的列表。当建筑物右侧的每座建筑物都比其矮时,其高度值为 heights[i] 的建筑物可以看到大海。我们必须按升序找到可以看到海洋的建筑物索引。
因此,如果输入为 heights = [8, 12, 12, 9, 10, 6],则输出将为 [2, 4, 5],因为我们可以从索引 2 处的建筑物高度 12、索引 10 处的建筑物高度 10 以及索引 5 处的最后一个建筑物看到海洋。
为了解决这个问题,我们将遵循以下步骤 −
- stack := a new list
- 对于 heights 中的每个索引 idx 和高度 h,执行
- 当 stack 不为空且 heights[top of stack ] <= h 时,执行
- 从中删除最后一个元素堆栈
- 当 stack 不为空且 heights[top of stack ] <= h 时,执行
- 将 idx 推送到堆栈
- 返回堆栈
示例
让我们看看下面的实现以便更好地理解 −
def solve(heights): stack = [] for idx, h in enumerate(heights): while stack and heights[stack[-1]] <= h: stack.pop() stack.append(idx) return stack heights = [8, 12, 12, 9, 10, 6] print(solve(heights))
输入
[8, 12, 12, 9, 10, 6]
输出
[2, 4, 5]
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

