56 - II. 数组中数字出现的次数 II
思路:遍历统计
使用位运算,获取num最后一位 n 1 n_1 n1:
右移,可获取num所有位的值
然后,对数组遍历,对3求余,得到结果
class Solution {
public:
int singleNumber(vector<int>& nums) {
int counts[32];
memset(counts,0,sizeof(counts));
for(int num:nums){
for(int j=0;j<32;j++){
counts[j]+=num&1;
num>>=1;
}
}
int res=0,m=3;
for(int i=0;i<32;i++){
res<<=1;
res|=counts[31-i]%m;
}
return res;
}
};
时间复杂度 O(n) n是数组长度
空间复杂度 O(1)