1046. 最后一块石头的重量 大顶堆应用

该博客介绍了一个Java方法,用于解决两组石头相互砸剩最后一块石头的重量问题。通过创建一个最大堆,将所有石头的重量加入堆中,每次取出两个最大重量的石头相减,将差值再次放入堆中,直到只剩一个元素,即为最后的石头重量。
摘要由CSDN通过智能技术生成
class Solution {
    public int lastStoneWeight(int[] stones) {
        //默认为最小堆,使用Lambda表达式传入自己的比较器转换成最大堆
        PriorityQueue<Integer> pq = new PriorityQueue<Integer>((a, b) -> b - a);        
        for (int stone : stones) {
            pq.offer(stone);
        }
        while (pq.size() > 1) {
            int a = pq.poll();//对于poll()方法,它将检索队列的head元素,然后删除队列的head元素;
            int b = pq.poll();
            if (a > b) {
                pq.offer(a - b);//offer()方法用于将给定元素(a - b)添加到此PriorityQueue中
            }
        }
         return pq.isEmpty() ? 0 : pq.poll();//如果队列为空,则它将返回null,但不会引发异常
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值