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

两数之和数组暴力解法问题:我的JavaScript代码哪里出错了?

两数之和暴力解法的问题分析与修复

核心问题点

  1. 错误的相同元素处理分支
    当找到满足和为target的两个元素时,你额外添加了判断:若两个元素值相等,就将i自增1后返回。这完全是多余操作,直接导致了测试用例[3,3]的错误输出——当index=0,i=1时,明明已经找到正确的索引对,却因为这个分支把i改成了2,返回了超出数组范围的索引。

  2. 内层循环初始化错误
    每次外层循环的index递增后,你把i重置为0,这会导致:

  • 重复检查已经配对过的元素组合(比如index=1时,i=0会再次检查nums[1]+nums[0],和之前index=0,i=1的检查重复)
  • 可能出现index === i的自我配对情况(不符合题目“两个不同索引”的要求)

正确的内层循环初始化应该是i = index + 1,只遍历index之后的元素,避免重复和无效检查。

修复后的代码

var twoSum = function(nums, target) {
    let index = 0;
    while (index <= nums.length - 1) {
        let i = index + 1;
        while (i <= nums.length - 1) {
            if (nums[index] + nums[i] === target) {
                return [index, i];
            }
            i++;
        }
        index++;
    }
};

console.log(twoSum([3, 3], 6)); // 输出 [0, 1]

修复说明

  • 移除了多余的相同元素判断分支,找到符合条件的索引对直接返回,避免错误修改索引值
  • 内层循环从index + 1开始,确保只检查当前index之后的元素,既避免重复计算,也保证不会出现自我配对的情况

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 00:10:51