问题描述
思路
- 数组num存放数出现的次数。
for( i = 0; i < n; i++){
int x;
scanf("%d",&x);
num[x]++;
}
- 遍历数组num,找出数组中最大的元素,即为最大次数,对应的下标即为出现次数最多的数。(由于遍历从小到大,所以一定满足相同出现次数下,min值是最小的那个)
int maxn = num[0];
int min = 0;
for(i = 1; i < maxnum; i++){
if( num[i] > maxn ){
maxn = num[i];
min = i;
}
}
完整代码
#include <bits/stdc++.h>
using namespace std;
const int maxnum = 1e4+10;
int num[maxnum] = {0};
int main(){
int i,n;
scanf("%d",&n);
for( i = 0; i < n; i++){
int x;
scanf("%d",&x);
num[x]++;
}
int maxn = num[0];
int min = 0;
for(i = 1; i < maxnum; i++){
if( num[i] > maxn ){
maxn = num[i];
min = i;
}
}
printf("%d",min);
return 0;
}