Java bit manipulation solution


  • 25
    public int singleNumber(int[] nums) {
      int ones = 0, twos = 0, threes = 0;
            
      for (int i = 0; i < nums.length; i++) {
        // twos holds the num that appears twice
        twos |= ones & nums[i];
        
        // ones holds the num that appears once
        ones ^= nums[i];
     
        // threes holds the num that appears three times
        threes = ones & twos;
                
        // if num[i] appears three times
        // doing this will clear ones and twos
        ones &= ~threes;
        twos &= ~threes;
      }
            
      return ones;
    }

  • 0
    J

    Very brilliant!


  • 0
    M

    Hi, can you explain more about your alg?


  • 0
    S

    +1, more explanation is indeed appreciated!


Log in to reply
 

Looks like your connection to LeetCode Discuss was lost, please wait while we try to reconnect.