13年12月CCF计算机软件能力认证
3192. 出现次数最多的数
给定 n 个正整数,找出它们中出现次数最多的数。
如果这样的数有多个,请输出其中最小的一个。
输入格式
输入的第一行只有一个正整数 n,表示数字的个数。
输入的第二行有 n 个整数 s1,s2,…,sn。
相邻的数用空格分隔。
输出格式
输出这 n 个次数中出现次数最多的数。
如果这样的数有多个,输出其中最小的一个。
数据范围
1≤n≤1000,
1≤si≤10000
输入样例:
6
10 1 10 20 30 20
输出样例:
10
c++: 哈希表思想
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int N = 10050; //要比si大,将si作为数组a下标
int n;
int a[N];
int main()
{
cin>>n;
while(n--){
int x;
cin>>x;
a[x]++;
//数组a元素值默认为0。 若x = 10 22 10 3 3
//a[10] = 2 a[22] = 1 a[3] = 2
//在输入时便将数据有序表达了,保证在下面的for中第一次拿到的(次数最多2次且相同)是最小的数
}
int res= 0;
for(int i= 1; i<N ;i++){
if(a[i] > a[res]){
res = i;
}
}
cout << res <<endl;
return 0;
}