1046. Last Stone Weight
題目網址:https://leetcode.cn/problems/last-stone-weight/
題意:給一整數 array
stones
, 其中stones[i]
代表第i
塊石頭的重量。每一回合取出最重的兩塊石頭, 並將其互相撞擊。假設石頭的重量分別為
x
、y
, 且x ≤ y
。則撞擊後的可能結果如下:
- 若
x == y
, 則兩塊石頭都將完全粉碎- 若
x != y
, 則重量為x
的石頭將完全粉碎, 而重量為y
的石頭之新重量為y - x
最後, 頂多剩下一塊石頭。若沒有石頭剩下, 則返回
0
; 否則, 返回該石頭的重量。
Solution:
想法:利用 Heap, 先將所有的元素 push 到 max heap
pq
中, 再從pq
中兩兩取出元素做運算
class Solution { |
- time:$O(n \cdot log(n))$ ➔ 將所有的 stone push 到
pq
中、將所有 stone 取出來做運算, 其中n
為 stone 的個數 - space:$O(n)$ ➔
pq
中的元素個數不超過n
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 Zako's Blog!
評論