【发布时间】:2019-12-23 23:10:28
【问题描述】:
给定一个整数数组,返回两个数字的索引,使它们相加到一个特定的目标。
示例:
给定 nums =
[3, 2, 4],目标 = 6,因为
nums[1] + nums[2]= 2 + 4 = 6
return [1, 2].
解决方案
var twoSum = function(nums, target) {
for(let i = 0; i <= nums.length; i++){
for(let j = 0; j <= nums.length; j++){
if(nums[i] + nums[j] == target){
return [i, j]
}
}
}
};
上面的代码在其他情况下有效,但不是这个。
预期结果 [1,2]
输出 [0,0]
例如,我尝试使用不同的数字数组和不同的目标,即使您更改数字的顺序也可以使用
示例:
新数组:[15, 7, 11, 2],目标 = 9,
输出: [1, 3].
我不明白解决方案有什么问题,希望有人能解释一下。谢谢
【问题讨论】:
-
你正在做的问题是 j 从 0 开始索引。所以它会考虑两次驻留在 i 处的任何元素。 j 应始终为 i+1。作为您给出的示例,假设 i=0 和 j=0,现在它将检查 num[0]+num[0] 即 3+3 并返回 0,0。但问题表明没有数字可以使用两次。所以如果你这样设置 j=i+1 3+2 !=6 会产生下一个元素。
标签: javascript arrays algorithm