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

HackerRank sockMerchant题JS排序计数解法输出错误如何排查修复

问题排查与修复

错误原因

你的代码仅在遍历遇到不同颜色时,才将上一个颜色的可配对数计入总对数,遍历结束后最后一组相同颜色的计数没有被统计,直接导致结果偏小。

拿你给出的测试用例举例:
输入数组排序后为 [1,1,1,1,2,3,3,3,3,3],遍历过程如下:

  1. 遇到颜色2时,统计前一个颜色1的数量4,得到2对计入总对数
  2. 遇到颜色3时,统计前一个颜色2的数量1,得到0对计入总对数
  3. 遍历到最后一个元素3时,counter累计到5,但循环直接结束,这部分的Math.floor(5/2)=2对没有计入总对数,最终只返回2,和正确结果差了2。

修复方案

只需要在循环结束后,额外加上最后一组颜色的可配对数即可。
修复后的代码:

function sockMerchant(n, ar) {
    // Write your code here
    let pairs=0;
    let counter;
    ar.sort()

    for(let i=0; i < n; i++){
        if (i == 0){
            counter = 1;
        }else{
            if(ar[i] == ar[i-1]){
                counter++;
            }else{
                pairs += Math.floor(counter/2);
                counter= 1;
            }
        }
    }
    // 新增:统计最后一组颜色的配对数
    pairs += Math.floor(counter/2);
    return pairs
}

修复后测试用例的计算结果为2+0+2=4,和预期结果一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 05:57:03