题意介绍
给出n个数,zjm想找出出现至少(n+1)/2次的数, 现在需要你帮忙找出这个数是多少?
题意分析
用到map来存储每个数据出现的个数,然后遍历map,找到出现次数大于等于(n+1)/2的即可。
通过代码
#include<bits/stdc++.h>
using namespace std;
int n;
long long a, mn, mx;
map<long long, int> m;
int main() {
while (scanf("%d", &n) != EOF) {
m.clear();
mn = 0;
mx = 0;
int count = n;
while (count--) {
scanf("%lld", &a);
m[a]++;
mn = min(mn, a);
mx = max(mx, a);
}
for (long long i = mn; i <= mx; i++) {
if (m[i] >= (n + 1) / 2) {
printf("%lld\n", i);
break;
}
}
}
return 0;
}