Node js在索引而不是索引处显示值



编写此2sums代码以获得以下问题的有效O(N)时间复杂性算法

Input: nums = [2,7,11,15], target = 9
Output: [0,1]
Output: Because nums[0] + nums[1] == 9, we return [0, 1].

不幸的是,数组nums的值显示在输出中,而需要的是使indices显示在输出中

以下需要做哪些更改

let hashTwoSum = (array, sum) => {
let numsObj = {}
let nums = []

for(let i in array){
let addend = sum - array[i]

if (addend in numsObj){
nums.push([addend, array[i]])
}
numsObj[array[i]] = i

}
return nums

}
let array = [2,7,11,15]
console.log(hashTwoSum(array,9))


非常感谢您的帮助

问候,

Carolyn

正如@jriend00所说,不要使用for(... in ...)循环来迭代数组。但在您需要索引的情况下,您需要使用旧的for循环:for(let i = 0; i < array.length; i++)。保存结果时,需要同时推送索引:nums.push([numsObj[addend], i])

这里有一个完整的例子:

let hashTwoSum = (array, sum) => {
let numsObj = {}
let nums = []
for(let i = 0; i < array.length; i++){
let addend = sum - array[i]
if (addend in numsObj){
nums.push([numsObj[addend], i])
}
numsObj[array[i]] = i
}
return nums
}
let array = [2,7,11,15,6]
console.log(hashTwoSum(array,17))

这将输出:

[ [ 0, 3 ], [ 2, 4 ] ]

因为2+15和11+6都等于17。

最新更新