Priority-Queue
最后一块石头的重量
cpp
class Solution {
public:
int lastStoneWeight(vector<int>& stones) {
priority_queue<int> q;
for(auto v:stones){
q.push(v);
}
while(q.size()>1){
int x=q.top();
q.pop();
int y=q.top();
q.pop();
if(x!=y)
q.push(x-y);
}
if(q.size()==0)
return 0;
int ans=q.top();
return ans;
}
};
从数量最多的堆取走礼物
cpp
class Solution {
public:
long long pickGifts(vector<int>& gifts, int k) {
priority_queue<long long > q;
for(auto v:gifts){
q.push(v);
}
while(k--){
long long top=q.top();
q.pop();
top=int(sqrt(top));
q.push(top);
}
long long ans=0;
while(q.size()!=0){
ans+=q.top();
q.pop();
}
return ans;
}
};