原题:Given an array of integers, every element appears three times except for one. Find that single one.
class Solution {
public:
int singleNumber(int A[], int n) {
// Note: The Solution object is instantiated only once and is reused by each test case.
//// 二进制模拟三进制
int ones = 0, twos = 0, non_three = 0;
for(int i = 0;i < n;i++){
twos ^= (ones&A[i]);
ones ^= A[i];
non_three = ~(ones & twos); // 有进位置成0
twos &= non_three;
ones &= non_three;
}
return ones;
}
};