137-Single Number II

kevin聰發表於2018-04-25

Description

Given a non-empty array of integers, every element appears three times except for one, which appears exactly once. Find that single one.

Note:

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


Example 1:

Input: [2,2,3,2]
Output: 3

Example 2:

Input: [0,1,0,1,0,1,99]
Output: 99

問題描述


問題分析


解法

class Solution {
    public int singleNumber(int[] nums) {
        int x1 = 0,x2 = 0,mask = 0;

        for(int i : nums){
            x2 ^= x1 & i;
            x1 ^= i;
            mask = ~(x1 & x2);
            x2 &= mask;
            x1 &= mask;
        }

        return x1;
    }
}

相關文章