c语言编写程序,找出出现次数最高的数字 数字范围1-1000 时间复杂度不超过O(n)
以下是一个使用C语言编写的程序,可以找出1到1000之间出现次数最高的数字,时间复杂度不超过O(n)。
#include <stdio.h>
int main() {
int occurrences[1001] = {0};
int max_occurrences = 0;
int max_number = 0;
// 输入一组数字,以-1作为结束标志
int number;
printf("请输入一组数字,以-1作为结束标志:\n");
while (1) {
scanf("%d", &number);
if (number == -1) {
break;
}
// 记录数字出现的次数
occurrences[number]++;
// 更新最大出现次数和对应的数字
if (occurrences[number] > max_occurrences) {
max_occurrences = occurrences[number];
max_number = number;
}
}
printf("出现次数最多的数字是 %d,共出现了 %d 次。\n", max_number, max_occurrences);
return 0;
}
该程序首先创建了一个长度为1001的数组occurrences
,用于记录数字的出现次数。然后,程序要求用户输入一组数字,以-1作为结束标志。在每次输入一个数字后,程序会将该数字对应的数组元素加1,并与当前的最大出现次数进行比较,如果大于最大出现次数,则更新最大出现次数和对应的数字。当用户输入-1时,程序退出循环,并输出出现次数最多的数字和其出现次数。