int singleNumber(int A[], int n) {
int* cnt = new int[8*sizeof(int)];
for (int i = 0; i < 8*sizeof(int); i++)
{
cnt[i] = 0;
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < 8*sizeof(int); j++)
{
int bitIsOne = (A[i]>>j)&1;
cnt[j] += bitIsOne;
}
}
int num = 0;
for (int i = 0; i < 8*sizeof(int); i++)
{
num += (cnt[i]%3)<<i;
}
return num;
}
分别计算所有数字每一位之和,对3取余后就对应着single number的每一位