Monday, April 13, 2020

Last Stone Weight



We have a collection of stones, each stone has a positive integer weight.

Each turn, we choose the two heaviest stones and smash them together. Suppose the stones have weights x and y with x <= y. The result of this smash is:
If x == y, both stones are totally destroyed;
If x != y, the stone of weight x is totally destroyed, and the stone of weight y has new weight y-x.

At the end, there is at most 1 stone left. Return the weight of this stone (or 0 if there are no stones left.)


class LastStoneWeight
{
     public int lastStoneWeight(int[] stones)
     {
        PriorityQueue<Integer>  pq= new PriorityQueue<Integer>(Collections.reverseOrder());
     
       for(int item:stones)
      {
           pq.offer(item);
      }

      while(pq.size()>1)
      {
           pq.offer(pq.poll()-pq.poll());
       }
           return pq.peek();
      }
}

No comments:

Post a Comment