C++ 给定n个正整数,找出它们中出现次数最多的数。如果这样的数有多个,请输出其中最小的一个。
时间: 2023-06-09 18:06:56 浏览: 270
您好,很高兴能与您进行对话。针对您的问题,您可以使用一个哈希表来记录每个数的出现次数,然后遍历哈希表找到出现次数最多的数并输出即可。如果有多个数出现次数相同,可以使用一个变量记录最小的数,然后在遍历哈希表的过程中更新这个变量。以下是一个简单的C代码实现:
```
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n;
scanf("%d", &n); // 输入数字个数
int *nums = malloc(sizeof(int) * n); // 动态分配数组
for (int i = 0; i < n; i++) {
scanf("%d", &nums[i]); // 输入每个数字
}
int *hash = calloc(10001, sizeof(int)); // 初始化哈希表为0
int max_count = 0, min_num = 10001;
for (int i = 0; i < n; i++) {
int num = nums[i];
hash[num]++;
if (hash[num] > max_count) {
max_count = hash[num];
min_num = num;
} else if (hash[num] == max_count && num < min_num) {
min_num = num;
}
}
printf("%d\n", min_num); // 输出出现次数最多且最小的数
free(nums);
free(hash);
return 0;
}
```
希望能对您有所帮助。如果您有其他问题,可以继续问我。
阅读全文