题目描述
12点又到了,特别懒的老W又懒的去买饭,但又想吃饭,于是他让老 L 给他带饭,老L答应给他带饭,不过需要老 W 先 做出一道题:
W:“给你一些数字,问你出现次数最多的数字,如果出现次数最多的数字有多个请输出最小的一个,不过最多可以有1000000个数字, 这些数字都是整数,保证每个数字 大于等于 -5,小于等于5。”
输入
第一行一个数字 n (0< n <=1000000)。接下来 n 个数字 d (-5 <= d <= 5),digit为整数。
输出
一个整数 ans (-5 <= ans <= 5).样例输入
5 -5 -5 0 5 5
样例输出
-5
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main() {
int n;
scanf("%d", &n); // 读取数字个数
// 初始化一个数组来记录每个数字出现的次数
// 数组索引0对应数字-5,索引1对应数字-4,...,索引10对应数字5
int freq[11] = { 0 };
int num;
for (int i = 0; i < n; i++) {
scanf("%d", &num); // 读取每个数字
// 将数字映射到数组的索引上
int index = num + 5;
freq[index]++; // 更新对应数字的出现次数
}
// 初始化最大出现次数和对应的最小数字
int max_freq = 0;
int min_num = 0;
// 遍历数组找到出现次数最多的数字以及对应的最小数字
for (int i = 0; i < 11; i++) {
if (freq[i] > max_freq || (freq[i] == max_freq && i < min_num + 5)) {
max_freq = freq[i];
min_num = i - 5; // 还原数字到原范围
}
}
// 输出结果
printf("%d\n", min_num);
return 0;
}
标签:数字,1311,min,int,max,num,午饭,freq,语言 From: https://blog.csdn.net/qq_61584181/article/details/137580683