[LeetCode] 1046. Last Stone Weight

题:https://leetcode.com/problems/last-stone-weight/

题目大意

给定一组数,取出最大的两个数,然后计算绝对值的差,再将该值放入数组中。
迭代上述操作,直到数组中只剩一个数。

思路

使用 大顶堆,每次取出两个数,计算绝对值差,然后再放入数组中。

class Solution {
    public int lastStoneWeight(int[] stones) {
        PriorityQueue<Integer> pq = new PriorityQueue(new Comparator<Integer>(){
            public int compare(Integer o1,Integer o2){
                return o2 - o1;
            }
            
        });
        for(int stone:stones)
            pq.add(stone);
        while(pq.size()>1){
            int a = pq.poll();
            int b = pq.poll();
            pq.add(a - b);
        }
        return pq.poll();
    }
}

你可能感兴趣的:(LeetCode)