You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

HackerRank Counting Sort 1挑战:返回频率与预期不符问题求助

HackerRank计数排序1问题排查

问题描述

给定整数列表,实现countingSort函数,返回长度为100的频率数组——数组的每个索引对应0-99的数值,索引位置的值就是该数值在输入列表中的出现次数。输入格式为:第一行是列表长度n,后续n行每行一个整数。

你运行代码后输出与预期不符,核心问题是代码逻辑完全偏离了题目要求。

你的代码

function countingSort(arr) {
    // Write your code here
    let freqArray = [];
    let frequency = 0;
    
    for(let i=0; i <= arr.length; i++){
        if(i != 0){
            freqArray.push(frequency);
        }
        frequency = 0;
        for(let j=0; j <= arr.length; j++){
            if(arr[i] == arr[j]){
                frequency++;
            }
        }
    }
    
    return freqArray;
}

输入输出对比

测试输入

63 25 73 1 98 73 56 84 86 57 16 83 8 25 81 56 9 53 98 67 99 12 83 89 80 91 39 86 76 85 74 39 25 90 59 10 94 32 44 3 89 30 27 79 46 96 27 32 18 21 92 69 81 40 40 34 68 78 24 87 42 69 23 41 78 22 6 90 99 89 50 30 20 1 43 3 70 95 33 46 44 9 69 48 33 60 65 16 82 67 61 32 21 79 75 75 13 87 70 33

你的输出

1 3 2 2 2 2 2 1 2 1 2 2 1 3 2 2 2 1 2 2 2 1 2 3 1 1 2 2 1 1 1 2 3 2 1 1 1 3 2 2 3 2 2 2 2 1 2 3 1 2 1 3 2 2 2 1 1 2 1 2 1 3 1 1 2 1 1 2 2 3 1 2 1 2 1 2 2 1 3 2 2 2 3 1 3 1 1 2 1 2 1 3 2 2 2 2 1 2 2 3

预期输出

0 2 0 2 0 0 1 0 1 2 1 0 1 1 0 0 2 0 1 0 1 2 1 1 1 3 0 2 0 0 2 0 3 3 1 0 0 0 0 2 2 1 1 1 2 0 2 0 1 0 1 0 0 1 0 0 2 1 0 1 1 1 0 1 0 1 0 2 1 3 2 0 0 2 1 2 1 0 2 2 1 2 1 2 1 1 2 2 0 3 2 1 1 0 1 1 1 0 2 2

问题分析

你的代码逻辑完全不符合题目要求,核心错误点:

  1. 数组长度错误:你生成的freqArray长度与输入数组一致,但题目要求固定返回长度为100的数组。
  2. 索引对应关系错误:你现在是统计输入数组中第i个元素的出现次数,然后存入freqArray的第i-1位;但题目要求freqArray的第k位对应数值k的出现次数。
  3. 循环范围错误:外层循环i <= arr.length会导致访问arr[arr.length](undefined),多统计了一次无效值。

修正后的代码

function countingSort(arr) {
    // 初始化长度为100的频率数组,所有元素默认0
    const freqArray = new Array(100).fill(0);
    // 遍历输入数组,统计每个数值的出现次数
    for (const num of arr) {
        freqArray[num]++;
    }
    return freqArray;
}

逻辑说明

  • new Array(100).fill(0)直接创建符合要求的长度100的数组,每个位置初始化为0,对应0-99每个数值的初始出现次数。
  • 遍历输入数组的每个数字num,将freqArray[num]加1,这样索引num的位置就准确记录了该数值的出现次数。
  • 最终返回的数组完全满足题目要求:长度100,每个索引对应数值的出现次数。

内容的提问来源于stack exchange,提问作者mahteusodev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 00:15:06