c++
class Solution {
public:
int lastStoneWeight(vector<int>& stones) {
priority_queue<int> que;
for (int x : stones) que.push(x);
while (que.size() >= 2) {
int a1 = que.top();que.pop();
int a2 = que.top();que.pop();
if (a1 - a2) que.push(a1 - a2);
}
if (que.empty()) return 0;
return que.top();
}
};
js
var lastStoneWeight = function(stones) {
var que = new MaxPriorityQueue();
for (var x of stones) que.enqueue('x', x);
while (que.size() >= 2) {
var a1 = que.dequeue()['priority'];
var a2 = que.dequeue()['priority'];
if (a1 - a2) que.enqueue('x', a1 - a2);
}
return que.size() ? que.dequeue()['priority'] : 0;
};