3192. 出现次数最多的数 13年12月CSP

3192. 出现次数最多的数 - AcWing题库

13年12月CCF计算机软件能力认证,第1题

 

第一次提交,数据范围写错了,wa,日常迷糊,太久不写题了。

第二次提交,试图在一次循环内解决,但忘了判断答案是否为最小的数,wa。

 

真没必要在螺蛳壳里做道场。在简单题里降低时间复杂度,没有什么实际意义,反而提高错误率。能快速ac的代码,才是好代码!

 

常规解法,两次循环的ac代码: 

#include<bits/stdc++.h>

using namespace std;

const int N = 10000+1;
int cnt[N];

int main(){
	int n,ans = 0;
	cin>>n;
	while(n--){
		int x;
		cin>>x;
		cnt[x]++;
	} 
	for(int i = 1;i <= N;i++){
		if(cnt[i] > cnt[ans]) ans = i;
	}
	cout<<ans;
	return 0;
}

一次循环的ac代码:

#include<bits/stdc++.h>

using namespace std;

const int N = 10000+1;
int cnt[N];

int main(){
	int n,ans = 0,max = 0;
	cin>>n;
	while(n--){
		int x;
		cin>>x;
		cnt[x]++;
		if(cnt[x] > max){
			max = cnt[x];
			ans = x;
		}else if(cnt[x] == max){
			if(x < ans) ans = x;
		}
	} 
	cout<<ans;
	return 0;
}

 

posted @ 2023-05-25 14:43  infocodez  阅读(4)  评论(0编辑  收藏  举报