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!
評論