姓名
- 王胤皓
AC 记录
题目简述
找出数组中出现次数最多的数字,按照从小到大的顺序进行输出。
思路
用一个桶数组进行存储 a 1 , a 2 , a 3 ⋯ a n − 1 , a n a_1,a_2,a_3 \cdots a_{n-1},a_n a1,a2,a3⋯an−1,an 的出现的次数,因为题目中说:“取值范围为 1 1 1 到 30000 30000 30000”,所以不会出现 M L E MLE MLE。
然后通过遍历桶数组,找出出现次数最多的数的次数。
然后在从 1 ⇒ 30000 1 \Rightarrow 30000 1⇒30000 遍历一遍桶数组,如果这一个桶的值为出现次数最多的数的次数,那么输出 i i i 和出现次数最多的数的次数。
代码
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
int a[10005],tong[30005]={0},maxx=0;
for(int i=1; i<=n; i++){
cin>>a[i];
tong[a[i]]++;
maxx=max(maxx,tong[a[i]]);
}
for(int i=1; i<=30000; i++){
if(tong[i]==maxx) cout<<i<<" "<<maxx<<endl;
}
return 0;
}