LeetCode 筆記 - 1642. Furthest Building You Can Reach
題目在此 1642. Furthest Building You Can Reach
給定一系列的建築高度、磚塊數量還有梯子數量,請給出最遠可以到達第幾棟建築
解題思維
我們先釐清一下題目,首先我們需要認知到磚塊可以抵達的高度有限,而梯子可以到達無限高度
所以梯子需要用在最重要的地方
但在掃描的過程中,我們無法知道哪裡才是最終該用梯子的地方
但是我們可以改變過去 :D
首先,我們一但遇到需要爬的地方一率先使用梯子,直到梯子使用完畢
這時我們需要維護一個 Priority queue 這通常會用 Heap 來實現
當我們使用了梯子,就把高度資訊放進我們的 Priority queue
這可以幫助我們在需要的時候給出過去爬過的最小高度
而當梯子用完時,我們就開始從 Priority queue 拿出過去最小的高度
來替換成磚塊
這時我們又有一個梯子可以用了
持續這個過程直到磚塊用完
程式碼
1 | class Solution: |
🥹