Single NumberII

题目:

Given 3*n + 1 numbers, every numbers occurs triple times except one, find it.

分析:

3个数抵消,不进位加法,变成三进制,每位单独加起来,得到的数就是结果

A[j] >> i & 1; 用来把一个整数拆成Bit位

解法:

public int singleNumberII(int[] A) {
        // write your code here
        int[] bit = new int[32];
        int ret = 0;
        for(int i = 0; i < 32; i++){
            for(int j = 0; j < A.length; j++){
               bit[i] +=  A[j] >> i & 1; //用来把一个整数拆成Bit位
               bit[i] %= 3;//三进制
            }
            ret |= bit[i] << i;
        }
        return ret;
    }

Last updated