问题描述:
Given an array of integers, every element appears three times except for one. Find that single one.
给一个数组,里面除了一个元素出现一次,其他的元素都出现了3次,求出出现一次的元素;
要求,O(n)的时间复杂度和O(1)
class Solution {
public:
int singleNumber(int A[], int n) {
if(A==NULL)
return 0;
int result=0;
int tmp=0;
int flag=1;
for(int i=0;i<32;i++)
{
tmp=0;
for(int j=0;j<n;j++)
{
tmp += A[j]&flag;
A[j]=A[j]>>1;
}
tmp=tmp%3;
tmp=tmp<<i;
result=result|tmp;
//flag=flag<<1;
}
return result;
}
};
通过对bit位的运算,得到结果