写完看评论去才发现没用上过半的条件,做的麻烦了。其实差不多,两种方法如下:

class Solution {
public:
    int MoreThanHalfNum_Solution(vector<int> numbers) {
        sort(numbers.begin(),numbers.end());
        int number=numbers[0];
        int sum=0;
        int ans=numbers[0];
        int max=0;
        for(int i=0;i<numbers.size();i++){
            if(number==numbers[i]) sum++;
            else {
                number=numbers[i];
                sum=1;
            }
            if(max<sum){
                ans=number;
                max=sum;
            }
        }
        return ans;
    }
};

统计次数还可以用map

class Solution {
public:
    int MoreThanHalfNum_Solution(vector<int> numbers) {
        map<int,int> m;
        int ans=0;
        int max=0;
        for(int i=0;i<numbers.size();i++){
            m[numbers[i]]++;
            ans=max<m[numbers[i]]?numbers[i]:ans;
            max=max<m[numbers[i]]?m[numbers[i]]:max;
        }
        return ans;
    }
};