如果sum等于target,则返回数组索引的索引

时间:2017-06-23 22:59:37

标签: javascript

我正在尝试使用leetcode为编码采访做好准备。在第一个问题中,我必须返回其总和等于给定目标的数字的索引。我的结果满足19个中的13个测试。问题在

失败
Input:
[3,3]. target=6
Output:
undefined
Expected:
[0,1]

有人可以给我一个暗示我在哪里失败?

我的解决方案:

/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number[]}
 */
var twoSum = function(nums, target) {
    for (var i=0; i< nums.length; i++)
    {
        for (var j=1; j< (nums.length-1); j++)
        {
            if ((nums[i]+nums[j]) == target)
                {
                    var arr = [nums.indexOf(nums[i]), nums.indexOf(nums[j])];
                    arr.sort();
                    return arr;
                }
        }
    }
};

3 个答案:

答案 0 :(得分:2)

当数组的长度为2时,你的内部循环是: j=1; j < 1; j++

代码永远不会进入,因此不会返回任何内容。

只需更改循环顺序:

/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number[]}
 */
var twoSum = function(nums, target) {
    for (var i=0; i< nums.length - 1; i++)
    {
        for (var j= i + 1; j < (nums.length); j++)
        {
            if ((nums[i]+nums[j]) == target)
                {
                    return [i,j];
                }
        }
    }
};
console.log(twoSum([3,3], 6));

答案 1 :(得分:0)

我现在没时间测试但是我看到你的代码并且认为for循环的范围可能是错误的(var i = 0; i&lt; nums.length; i ++)它将是0,1,2由于nums的长度为2,但是没有带索引2的nums,nums的索引只有0而1不是2。

答案 2 :(得分:0)

{{1}}