牛客题霸--数组中出现次数超过一半的数字
数组中出现次数超过一半的数字
https://www.nowcoder.com/practice/e8a1b01a2df14cb2b228b30ee6a92163?tpId=117&&tqId=34995&rp=1&ru=/ta/job-code-high&qru=/ta/job-code-high/question-ranking
数组中出现次数超过一半的数字
题目链接
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;
}
}; 
查看20道真题和解析