LeetCode 1046. 最后一块石头的重量(priority_queue 堆)
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 1046. 最后一块石头的重量(priority_queue 堆)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1. 題目
有一堆石頭,每塊石頭的重量都是正整數(shù)。
每一回合,從中選出兩塊最重的石頭,然后將它們一起粉碎。假設(shè)石頭的重量分別為 x 和 y,且 x <= y。那么粉碎的可能結(jié)果如下:
如果 x == y,那么兩塊石頭都會(huì)被完全粉碎;
如果 x != y,那么重量為 x 的石頭將會(huì)完全粉碎,而重量為 y 的石頭新重量為 y-x。
最后,最多只會(huì)剩下一塊石頭。返回此石頭的重量。如果沒有石頭剩下,就返回 0。
來(lái)源:力扣(LeetCode) 鏈接:https://leetcode-cn.com/problems/last-stone-weight
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
2. 優(yōu)先隊(duì)列(堆)解題
類似題目:LeetCode 1049. 最后一塊石頭的重量 II(DP)
class Solution { public:int lastStoneWeight(vector<int>& stones) {priority_queue<int> q(stones.begin(),stones.end());int x, y;while(q.size() > 1){y = q.top();q.pop();x = q.top();q.pop();if(x != y)q.push(y-x);}if(q.size() == 0)return 0;return q.top();} };總結(jié)
以上是生活随笔為你收集整理的LeetCode 1046. 最后一块石头的重量(priority_queue 堆)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 我的世界怎么设置服务器维护中,我的世界服
- 下一篇: LeetCode 26. 删除排序数组中