出现次数最多的数( 201312-1/CCF)———附带思路和完整代码

0 效果

在这里插入图片描述
难点:认真读题,优化时间或者空间复杂度。

1 题目

在这里插入图片描述

2 思路

使用hash映射存储数字出现的次数,然后对每次输入的值num进行hashTable[num]++来计次,

  • 如果hashTable[num]次数大于minNum(初始值为0),则minNum = hashTable[num],ans = num;
  • 如果hashTable[num]次数等于minNum(初始值为0)且num小于ans,则minNum = hashTable[num],ans = num;
    最后输出ans。

3 代码

#include<cstdio>
const int MAXN = 10010;
int hashTable[MAXN] = {0};

int main(){
	int n, ans = 0, minNum = 0;
	scanf("%d", &n);
	while(n--){
		int num;
		scanf("%d", &num);
		hashTable[num]++;
		if(hashTable[num] > minNum || (hashTable[num] == minNum && num < ans)){
			minNum = hashTable[num];
			ans = num;			
		}
	}
	printf("%d", ans);
	return 0;
}
©️2020 CSDN 皮肤主题: 岁月 设计师:pinMode 返回首页