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,但不会引发异常
}
}
1046. 最后一块石头的重量 大顶堆应用
最新推荐文章于 2023-04-04 15:30:33 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)