Python程式:查詢可見海景的建築物
假設我們有一組不同建築物的高度列表。當其右側所有建築物的高度都低於該建築物時,高度為heights[i]的建築物可以看到海洋。我們必須找到可以看見海洋的建築物索引,並按升序排列。
因此,如果輸入類似於heights = [8, 12, 12, 9, 10, 6],則輸出將為[2, 4, 5],因為我們可以在索引2處高度為12的建築物、索引4處高度為10的建築物和索引5處的最後一棟建築物看到海洋。
為了解決這個問題,我們將遵循以下步驟:
- stack := 一個新的列表
- 對於heights中的每個索引idx和高度h,執行:
- 當stack不為空且heights[stack的頂部] <= h時,執行:
- 從stack中刪除最後一個元素
- 當stack不為空且heights[stack的頂部] <= h時,執行:
- 將idx壓入stack
- 返回stack
示例
讓我們看看下面的實現,以便更好地理解:
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]
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP