题目
https://leetcode-cn.com/problems/last-stone-weight/
代码
class Solution {
public int lastStoneWeight(int[] stones) {
PriorityQueue<Integer> queue=new PriorityQueue<>((x,y)->(y-x));
for(int s:stones)
queue.add(s);
int res=0;
while(queue.size()>0){
int x=queue.poll();
if(queue.size()==0){
return x;
}
int y=queue.poll();
if(x!=y){
if(x>y){
int tmp=x;
x=y;
y=tmp;
}
queue.add(y-x);
}
}
return 0;
}
}
复杂度
时间复杂度:O(nlogn),其中 n 是石头数量。每次从队列中取出元素需要花费 O(logn) 的时间,最多共需要粉碎 n−1 次石头。
空间复杂度:O(n)。