求一数组中出现最多的数字的次数
发布日期:2021-05-10 23:37:01 浏览次数:16 分类:精选文章

本文共 909 字,大约阅读时间需要 3 分钟。

想找到1到1000中出现次数最多的数字,可以使用一个数组记录每个数字的次数,然后遍历每个数字并提取其各位数字,更新数组中的计数。最后,比较数组中的数字,找到出现次数最多的那个。这种方法采用了空间换时间的策略,使用较小的内存空间来提高处理效率。

步骤解释:

  • 初始化一个大小为10的数组counts,每个元素初始化为0,用于记录0到9这十个数字的出现次数。
  • 遍历1到1000的每个数n
  • 对于每个数n,重复提取其最后一位数字,直到所有位数都被处理。
  • 每次提取数字时,将相应的counts数组位置加一。
  • 在所有数字处理完后,检查counts数组,找到出现次数最多的数字及其对应的次数。
  • 代码实现:

    void main() {
    int counts[10] = {0}; // 数组索引0-9记录数字0-9的统计
    for (int n = 1; n <= 1000; n++) {
    int num = n;
    while (num != 0) {
    int digit = num % 10; // 提取最后一位数字
    counts[digit]++;
    num /= 10; // 移除最后一位
    }
    }
    int max_count = 0;
    int max_digit = 0;
    for (int digit = 0; digit < 10; digit++) {
    if (counts[digit] > max_count) {
    max_count = counts[digit];
    max_digit = digit;
    }
    }
    printf("出现次数最多的是%d, 出现次数为%d\n", max_digit, max_count);
    }

    这个方法通过高效的数字提取和计数方式,确保在较小的空间内完成任务,时间复杂度在合理范围内,能够迅速找到出现频率最高的数字。

    上一篇:C++中map用法详解
    下一篇:改变Keil5所有窗口的背景颜色

    发表评论

    最新留言

    初次前来,多多关照!
    [***.217.46.12]2025年04月29日 21时11分02秒