问题描述
给定 n n n个正整数,找出它们中出现次数最多的数。
如果这样的数有多个,请输出其中最小的一个。
输入格式:
输入的第一行只有一个正整数 n,表示数字的个数。
输入的第二行有 n 个整数 s 1 , s 2 , … , s n s1,s2,…,sn s1,s2,…,sn。
相邻的数用空格分隔。
输出格式:
输出这 n n n个次数中出现次数最多的数。
如果这样的数有多个,输出其中最小的一个。
数据范围
1
≤
n
≤
1000
,
1≤n≤1000,
1≤n≤1000,
1
≤
s
i
≤
10000
1≤si≤10000
1≤si≤10000
输入样例:
6
10 1 10 20 30 20
输出样例:
10
思路
用数组来维护数字出现的次数,从左往右找到出现最多的那个即可。
C++代码:
#include <iostream>
using namespace std;
const int N = 10010;
int n;
int s[N];
int main()
{
cin >> n;
while(n -- )
{
int x;
cin >> x;
s[x] ++;
}
int res = 0;
for(int i = 1; i < N; i++)
if(s[i] > s[res])
res = i;
cout << res << endl;
return 0;
}