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]
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP