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]
  • 返回列表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]

更新於:2021年10月7日

260 次瀏覽

啟動你的職業生涯

完成課程獲得認證

開始學習
廣告