(1)找众数(出现次数最多的数)(数字范围是[0, 100]) 如: 输入:5 1 2 1 2 1 输出:1 如: 输入:8 3 2 3 2 3 4 2 1 输出:2(众数有两个,输出最小的)
时间: 2023-07-16 10:15:00 浏览: 48
可以使用哈希表(字典)来实现,遍历输入的数字序列,将每个数字出现的次数记录在哈希表中,最后再遍历哈希表,找到出现次数最多的数字即可。
以下是Python代码实现:
```python
n = int(input())
nums = list(map(int, input().split()))
# 统计数字出现次数
count = {}
for num in nums:
if num not in count:
count[num] = 0
count[num] += 1
# 找出出现次数最多的数字
max_count = 0
mode = 0
for num in range(101):
if num in count and count[num] > max_count:
max_count = count[num]
mode = num
print(mode)
```
时间复杂度为O(n),空间复杂度为O(1)(哈希表最多只会有100个元素)。
相关问题
C语言实现找众数(出现次数最多的数)(数字范围是[0, 100]) 如: 输入:5 1 2 1 2 1 输出:1
以下是一种简单的实现方式:
```c
#include <stdio.h>
#include <stdlib.h>
#define NUM_RANGE 101 // 数字范围是[0, 100]
int main() {
int n;
scanf("%d", &n);
int *nums = (int *) malloc(n * sizeof(int));
int *counts = (int *) calloc(NUM_RANGE, sizeof(int));
// 统计每个数字出现的次数
for (int i = 0; i < n; i++) {
scanf("%d", &nums[i]);
counts[nums[i]]++;
}
// 找到出现次数最多的数字
int max_count = 0;
int mode = 0;
for (int i = 0; i < NUM_RANGE; i++) {
if (counts[i] > max_count) {
max_count = counts[i];
mode = i;
}
}
printf("%d\n", mode);
free(nums);
free(counts);
return 0;
}
```
首先,我们通过 `scanf` 读入数字的个数 `n`,然后动态分配两个数组 `nums` 和 `counts`,其中 `nums` 存储输入的数字,`counts` 存储每个数字出现的次数。
接下来,我们遍历 `nums` 数组,统计每个数字出现的次数,具体做法是将 `counts[nums[i]]` 加 1。
最后,我们遍历 `counts` 数组,找到出现次数最多的数字,并输出该数字。如果有多个数字出现次数相同,则输出其中任意一个数字即可。
注意,由于数字范围是 [0, 100],因此需要将 `counts` 数组的大小设置为 101,而不是 100。
用c语言编写找众数(出现次数最多的数)(数字范围是[0, 100])
以下是使用 C 语言编写的找众数程序,数字范围是 [0,100]:
```c
#include <stdio.h>
int main()
{
int a[101] = {0}; // 初始化数组,用于统计每个数字出现的次数
int n, max = 0, mode; // n 为输入的数字数量,max 为数字出现的最大次数,mode 为众数
printf("请输入数字个数:");
scanf("%d", &n);
printf("请输入数字:\n");
for (int i = 0; i < n; i++) {
int num;
scanf("%d", &num);
a[num]++; // 统计数字出现的次数
if (a[num] > max) { // 更新最大出现次数和众数
max = a[num];
mode = num;
}
}
printf("众数是:%d,出现次数为:%d\n", mode, max);
return 0;
}
```
该程序首先将数字出现次数统计在一个长度为 101 的数组中,然后遍历输入的数字,更新数组中每个数字出现的次数。最后,找到出现次数最多的数字,输出其出现次数和众数即可。