我正在研究'Two Sum' problem in Leetcode。
我确定这段代码是正确的,我已经在Repl中对其进行了测试,并且看起来在那里正确,但是Leetcode给我一个错误。
这是我的代码:
var arr = [];
var twoSum = function(nums, target) {
for(var i = 0; i < nums.length; i++){
for(var j = i+1; j < nums.length; j++){
console.log(nums[i] + ', ' + nums[j]);
var tot = nums[i] + nums[j];
if(tot === target){
arr.push(i,j);
console.log(arr);
return arr;
}
}
}
};
//var a = [2, 7, 11, 15];
//var b = 9;
var a = [2, 3, 4];
var b = 6;
twoSum(a, b);
我收到的错误如下:
Input:
[3,2,4]
6
Output:
[0,1,1,2]
Expected:
[1,2]
为什么期望
[1, 2]
?在这种情况下,当然应该期望[0, 1]
,然后为什么我的代码两次添加到arr数组中?对我来说似乎是个虫子...注意:我在Leetcode上看到很多关于此问题的文章,但是都没有解决我在Javascript中遇到的特定问题。
最佳答案
为什么期望[1,2]?
因为2 + 4 = 6
在这种情况下,当然应该期望[0,1]
否,因为3 + 2 = 5
然后为什么我的代码两次添加到arr数组中?
因为您在函数外部声明了数组。每次调用该函数都会重新使用它。将数组声明移到您的twoSum
函数中,甚至更好:将return [i, j]
而不是push
移入空数组。
关于javascript - Javascript中的两个Leetcode求和-代码看起来正确,但是Leetcode表示这是错误的,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57048231/