题目地址:点击打开链接
把每个数转化为二进制表示,所有数对应二进制每位按mod3进行加法操作,得到的结果就是那个唯一的数的二进制表示。
看到网上另一种非常神奇的解法:
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;
int not_threes,x;
for(int i=0;i<n;++i)
{
x=A[i];
twos|=ones&x;
ones^=x;
not_threes=~(ones&twos);
ones&=not_threes;
twos&=not_threes;
}
return ones;
}
};
解释: 点击打开链接