不断拿出最重的石头开始碰,碰小了放大恰当位置,直到最后一个,使用堆这种数据结构
class Solution {
public:
int lastStoneWeight(vector<int>& stones) {
// 维护一个最大堆,每次拿出堆两个元素来碰,然后将剩下的入堆,最后剩下的就是答案
priority_queue<int> pq;
for(auto stone:stones){
pq.push(stone);
}
while(!pq.empty()){
int a = pq.top();
pq.pop();
if(pq.empty()) return a;
int b = pq.top();
pq.pop();
pq.push(a-b);
}
return 0;
}
};