数组中出现次数超过一半的数字

题目链接

Solution

求出现次数大于一半的数。
直接开一个map,统计每个数字出现的个数,最后扫一遍原数组,找到出现次数大于一半的数字即可。

Code

class Solution {
public:
    int MoreThanHalfNum_Solution(vector<int> numbers) {
        map<int,int> cnt;
        for (int i = 0; i < (int)numbers.size(); ++i) cnt[numbers[i]] ++;
        for (int i = 0; i < (int)numbers.size(); ++i) 
            if (cnt[numbers[i]] * 2 > (int)numbers.size()) {
                return numbers[i];
            }
        return 0;
    }
};