问题
数组中有一个数字只出现一次,其余都出现三次,请找出这个出现一次的数
算法: 遍历统计
脑筋急转弯。统计每一位为1的个数,模3,就是唯一的那个数的那一位的值。
复杂度
时间 $O(N)$
空间 $O(1)$
代码
class Solution {
public:
int singleNumber(vector<int>& nums) {
int ans = 0;
for(int i = 31; i >= 0; i --){
int cnt = 0;
for(auto x: nums){
cnt += x >> i & 1;
}
ans = (ans << 1) + (cnt%3);
}
return ans;
}
};