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

求解Breaking Record问题时代码联合运行异常,单独函数正常

Breaking Record代码异常问题分析

输入分数数组[10, 5, 20, 20, 4, 5, 2, 25, 1],预期输出为[2, 4](2是打破最高纪录次数,4是打破最低纪录次数),但整体程序执行异常,单独运行HP和LP函数可得到预期结果,问题出在以下几点:

核心问题点

  • 原数组被意外修改:const array = scores;是引用赋值,HP函数中使用splice修改了数组b(本质是修改原数组),导致LP函数处理的不是原始分数数组,而是HP处理后的残缺数组,计算逻辑完全失效。
  • 共享变量污染:count、temp、temp1等变量是外层函数的共享变量,HP运行时会修改这些变量的值,当LP函数运行时,会继承这些被修改后的变量状态,而非使用原始初始值,引发逻辑错乱。
  • HP函数逻辑冗余且错误:通过splice删除元素、去重的操作完全没必要,统计破纪录次数只需要遍历数组,每次比较当前值与当前最大/最小值,更新计数即可,删除元素反而破坏了原始数据。

修正后的代码

var scores = [10, 5, 20, 20, 4, 5, 2, 25, 1];
function breakingRecords(scores) {
    let maxCount = 0;
    let minCount = 0;
    let currentMax = scores[0];
    let currentMin = scores[0];

    for (let i = 1; i < scores.length; i++) {
        if (scores[i] > currentMax) {
            currentMax = scores[i];
            maxCount++;
        } else if (scores[i] < currentMin) {
            currentMin = scores[i];
            minCount++;
        }
    }

    return [maxCount, minCount];
}

const ans = breakingRecords(scores);
console.log(ans); // 输出 [2, 4]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 00:26:24