可达鸭二月月赛——入门赛第四场T2题解

姓名

  • 王胤皓

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,a3an1,an 的出现的次数,因为题目中说:“取值范围为 1 1 1 30000 30000 30000”,所以不会出现 M L E MLE MLE

然后通过遍历桶数组,找出出现次数最多的数的次数

然后在从 1 ⇒ 30000 1 \Rightarrow 30000 130000 遍历一遍桶数组,如果这一个桶的值为出现次数最多的数的次数,那么输出 i i i 和出现次数最多的数的次数

代码

#include
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;
}

你可能感兴趣的:(算法,数据结构)