日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

80. Leetcode 1642. 可以到达的最远建筑 (堆-技巧三-事后小诸葛)

發布時間:2025/4/5 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 80. Leetcode 1642. 可以到达的最远建筑 (堆-技巧三-事后小诸葛) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
給你一個整數數組 heights ,表示建筑物的高度。另有一些磚塊 bricks 和梯子 ladders 。你從建筑物 0 開始旅程,不斷向后面的建筑物移動,期間可能會用到磚塊或梯子。當從建筑物 i 移動到建筑物 i+1(下標 從 0 開始 )時:如果當前建筑物的高度 大于或等于 下一建筑物的高度,則不需要梯子或磚塊 如果當前建筑的高度 小于 下一個建筑的高度,您可以使用 一架梯子 或 (h[i+1] - h[i]) 個磚塊 如果以最佳方式使用給定的梯子和磚塊,返回你可以到達的最遠建筑物的下標(下標 從 0 開始 )。示例 1:輸入:heights = [4,2,7,6,9,14,12], bricks = 5, ladders = 1 輸出:4 解釋:從建筑物 0 出發,你可以按此方案完成旅程: - 不使用磚塊或梯子到達建筑物 1 ,因為 4 >= 2 - 使用 5 個磚塊到達建筑物 2 。你必須使用磚塊或梯子,因為 2 < 7 - 不使用磚塊或梯子到達建筑物 3 ,因為 7 >= 6 - 使用唯一的梯子到達建筑物 4 。你必須使用磚塊或梯子,因為 6 < 9 無法越過建筑物 4 ,因為沒有更多磚塊或梯子。示例 2:輸入:heights = [4,12,2,7,3,18,20,3,19], bricks = 10, ladders = 2 輸出:7示例 3:輸入:heights = [14,3,19,3], bricks = 17, ladders = 0 輸出:3import heapqclass Solution:def furthestBuilding(self, heights: List[int], bricks: int, ladders: int) -> int:h = []for i in range(1, len(heights)):diff = heights[i] - heights[i-1]if diff <= 0:continueif bricks < diff and ladders > 0:ladders -= 1if h and -h[0] > diff:bricks -= heapq.heappop(h)else:continuebricks -= diffif bricks < 0:return i - 1heapq.heappush(h, -diff)return len(heights) - 1

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的80. Leetcode 1642. 可以到达的最远建筑 (堆-技巧三-事后小诸葛)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。