落單的數 II
給出3*n + 1 個的數字,除其中一個數字之外其他每個數字均出現三次,找到這個數字。
給出 [1,1,2,3,3,3,2,2,4,1] ,返回 4
一次遍歷,常數級的額外空間複雜度
class Solution {
public:
/*
* @param A: An integer array
* @return: An integer
*/
int singleNumberII(vector<int> &A) {
// write your code here
int end=0;
for(int i=0;i<32;i++)
{
int num=0;//每位1出現次數
for(auto n:A)
{
if(findzero(n,i))
num++;
}
end+=((num%3)<<i);//再左移恢復原值
}
return end;
}
bool findzero(int i,int k)
{
if((i>>k)&1)//先右移判斷
return true;
else
return false;
}
};