天天看点

[LeetCode] Single Number II

Given an array of integers, every element appears three times except for one. Find that single one.

Note:

Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?

public class Solution {
    public int singleNumber(int[] A) {
        int ones = 0, twos = 0, threes = 0;  
        for(int i = 0; i < A.length; i++)  
        {  
            threes = twos & A[i];   
            twos = twos | ones & A[i];  
            ones = ones | A[i];  
              
            twos = twos & ~threes;  
            ones = ones & ~threes; 
        }  
        return ones;  
    }
}