//将一个整数右移k位再左移k位,不一定得到原来的结果
//如果过程中间有对原数组中元素的修改,不可以乱用原值
可以不用base * 2^k的形式,反而用ret |= (1<<i)的形式
class Solution {
public:
int singleNumber(int A[], int n) {
if(n == 0){
return 0;
}
if(n == 1){
return 1;
}
int ret = 0;
for(int i = 0; i < 32; ++i){
int cntzero = 0, cntone = 0;
for(int j = 0; j < n; ++j){
int bitrec = A[j] & 1;
if(bitrec){
cntone++;
}
A[j] >>= 1;
}
if(cntone % 3 == 1){
ret |= (1 << i);
}
}
return ret;
}
};
leetcode single number2
最新推荐文章于 2020-08-06 19:11:52 发布