javascript - Javascript 中的两个和 Leetcode - 代码看起来正确但 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
ing 到空数组中。
推荐阅读
- android - Android 4.4 Volley 连接到 Nginx 错误
- java - 使用 Junit runner 运行测试时 Spring Autowired 失败
- javascript - 扩展图像网格问题
- flowable - 访问数组的 JSON 值(Flowable)
- javascript - 使用用户可以添加输入框的动态表单发送电子邮件
- php - php。当用户选择此选项时,显示所有 12 个月的日历
- python - AttributeError:“set”对象没有属性“popleft”
- php - 找不到类“Way\Generators\GeneratorsServiceProvider”
- javascript - 为什么顶部位置只改变一次
- html - Bootstrap 4 - 卡片背景图像调整大小问题