我正在尝试使用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;
}
}
}
};
答案 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}}