var twoSum = function(nums, target) {
let index = 0
let i = 1
while (index <= nums.length - 1) {
while (i <= nums.length - 1) {
if (nums[index] + nums[i] === target) {
if (nums[index] === nums[i]) {
i = i + 1
}
return([index, i])
} else {
i = i + 1
}
}
index = index + 1
i = 0
}
};
twoSum([3, 3], 6)
预期输出:[0,1]已收到:[0,2]
描述:给定一个整数数组和一个整数目标,返回这两个数字的索引,使它们相加为目标。
6条答案
按热度按时间7uzetpgm1#
当您找到匹配的结果时,需要删除以下代码
bvpmtnay2#
只要移走这个块就行了。
顺便说一句,你为什么从头开始写这段代码。你没有得到所有可能的数字。无论输入数组有多长,您只返回2个索引。
djp7away3#
@Lucumt已经指出,您应该省略代码中的两行。然而,表达函数的一种稍微传统的方式将涉及
for()
循环,因为它们会使代码的可读性略高于所选的while()
构造。内部循环也应始终从index+1
开始,如下所示:我的代码片段将在数组数组中返回“所有”可能的和。如果您只想要第一个解决方案,只需执行
twoSum(arr,targetNum)[0]
。vohkndzv4#
w3nuxt5m5#
您可以使用具有相同逻辑的for-loop,因为它看起来更简单。
3ks5zfa06#
跳过上面的“if”语句,它会增加本例中i的值。