题目:数组中所有的数字都出现了3次,除了其中一个,找出这个数
创建一个count[32]数组,存放1出现的次数,如果是3的倍数,就不是要找的数,忽略,最后把这些数取出就是要找的数。
(如果这个数出现了2次,结果要除2)。
int Find(int a[],int n)
{
int count[32]={0};
for(int i=0;i<n;i++)
{
for(int j=0;j<32;j++)
{
count[j]+=(a[i]>>j)&1;
count[j]%=3;
}
}
int result=0;
for(i=0;i<32;i++)
{
result+=(count[i]<<i);
}
return result;
}