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();
      }
}

Friday, April 10, 2020

Single Number






Given a non-empty array of integers, every element appears twice except for one. Find that single one.

Example 1: Input: [2,2,1] 
Output: 1
Example 2: Input: [4,1,2,1,2] 
Output: 4

class SingleNumber
{
   public int singleNumber(int[] nums) 
  {
     int x=nums[0];
     for(int i=1;i<nums.length;i++)
     {
         x=x^nums[i];
      }

     return x;
    }

}