# 1046. Last Stone Weight ###### tags: `Leetcode` `Easy` `Priority Queue` Link: https://leetcode.com/problems/last-stone-weight/ ## 思路 $O(NlogN)$ $O(N)$ Put all elements into a priority queue. Pop out the two biggest, push back the difference, until there are no more two elements left. ## Code ```java= class Solution { public int lastStoneWeight(int[] stones) { if(stones.length==1) return stones[0]; if(stones.length==0) return 0; Queue<Integer> q = new PriorityQueue<>((a,b)->b-a); for(int stone:stones){ q.add(stone); } while(q.size()>1){ int y = q.poll(); int x = q.poll(); if(x<y) q.add(y-x); } return q.size()==0?0:q.peek(); } } ```