class Solution {
public:
int MoreThanHalfNum_Solution(vector<int>& numbers) {
vector<int> cmt(32,0);
for(int x : numbers){
for(int i = 0;i < 32;i++){
cmt[i] += (x >> i) & 1;
}
}
int res = 0;
for(int i = 0;i < 32;i++){
if(cmt[i] > numbers.size()/2)res |= (1U << i);
}
return res;
}
};
这个数字如果出现超过数组大小的一般 那么它的二进制位肯定也出现过大于size/2 次 所以我们只要找出这些二进制位然后拼接在一起就可以了

京公网安备 11010502036488号