leetcode 1046. 最后一块石头的重量

130 阅读1分钟

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;
};