31_1046. 最后一块石头的重量


题目描述:

解题思路:

将所有的石头重量,放入最大堆里面,每次出队两个进行比较,直至剩下最后一块石头。

代码:

最大堆
class Solution {
    public int lastStoneWeight(int[] stones) {
        PriorityQueue pq = new PriorityQueue((a,b)->(b-a));
        int len = stones.length;
        for (int i = 0; i < len; i++) {
            pq.offer(stones[i]);
        }
        while (pq.size() > 1) {
            int y = pq.poll();
            int x = pq.poll();
            if (x == y) {
                continue;
            }
            y = y - x;
            pq.offer(y);
        }
        if (pq.isEmpty()) {
            return 0;
        }
        return pq.poll();
    }
}

相关