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

Hackerrank Plus Minus问题:计算数组正负零占比函数无返回值

问题分析与修复方案

嘿,我来帮你排查plusMinus函数的问题~你的代码没返回结果,主要是几个关键逻辑错误导致的,咱们一步步来修正:

核心错误点

  • 判断对象搞混了:循环里你判断的是索引i,而不是数组中的元素arr[i]!这就导致你一直在统计索引的正负,完全没用到数组里的实际值,肯定统计不对。
  • 变量作用域与计算位置错误:计数变量(noOfPostive等)放在了函数外部,多次调用函数会导致计数累加出错;而且占比计算放在循环内部,每次循环都会重复计算,完全没必要。
  • 缺少结果输出/返回逻辑:函数里没有把计算好的占比输出或者返回,所以你看不到任何结果。
  • 变量名拼写小失误:noOfPostive应该是noOfPositive(单词拼写错误,少了一个i)。

修正后的代码

function plusMinus(arr) {
    let noOfPositive = 0; 
    let noOfNegative = 0; 
    let noOfZero = 0;
    const length = arr.length;

    // 遍历数组元素,统计各类数量
    for (let i = 0; i < length; i++) {
        const current = arr[i];
        if (current > 0) {
            noOfPositive += 1;
        } else if (current < 0) {
            noOfNegative += 1;
        } else {
            noOfZero += 1;
        }
    }

    // 计算占比
    const fractionOfPositive = noOfPositive / length;
    const fractionOfNegative = noOfNegative / length;
    const fractionOfZero = noOfZero / length;

    // 可以选择返回结果对象,或者直接输出
    console.log(fractionOfPositive.toFixed(6)); // 按需求保留小数位数
    console.log(fractionOfNegative.toFixed(6));
    console.log(fractionOfZero.toFixed(6));

    // 如果需要返回结果,就返回一个对象
    return {
        positive: fractionOfPositive,
        negative: fractionOfNegative,
        zero: fractionOfZero
    };
}

修正说明

  1. 把计数变量移到函数内部,避免多次调用时的计数污染。
  2. 循环中判断的是数组当前元素arr[i],而不是索引i。
  3. 占比计算放在循环结束后,只计算一次即可。
  4. 添加了console.log输出结果,同时也支持返回结果对象,方便调用方使用。
  5. 用let/const替代var,遵循更现代的JS语法规范。
  6. 修正了变量名的拼写错误,让代码更易读。

内容的提问来源于stack exchange,提问作者Mostafa Jaafer Ulobeed

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:45:15