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 次 所以我们只要找出这些二进制位然后拼接在一起就可以了