题目大意:给出N * M 个数,每个数不超过 2^24, 求出出现次数大于 N * M / 2的数。
因为每个数的上限是2^24,hash表的话会超内存,用map<int, int>记录每个数出现的次数,当输入到的数满足条件时输出即可。
AC代码:
#include <cstdio>
#include <map>
using namespace std;
int main()
{
int M, N;
scanf("%d%d", &M, &N);
map<int, int> mp;
for (int i = 0; i < N; ++i)
{
for (int j = 0; j < M; ++j)
{
int tmp;
scanf("%d", &tmp);
mp[tmp]++;
if(mp[tmp] > M * N / 2) printf("%d", tmp);
}
}
return 0;
}