简体   繁体   中英

Node JS displaying value at index instead of indices

Written this 2sums code to get efficent O(N) Time complexity algorithm for below problem

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

unfortunately saw value at array nums got displayed in the output,whereas the need is to get the indices to be displayed in output

What change needs to be done below

            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))
            
            

Your help is appreciated

Regards,

Carolyn

As @jriend00 said, do not use for(... in...) loop for iterating arrays. But in your case, where you need indices, you need to use the good old for loop: for(let i = 0; i < array.length; i++) . And when you save results, you need to push both indices : nums.push([numsObj[addend], i]) .

Here's a complete example:

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))

This will output:

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

because 2 + 15 and 11 + 6 are both equal 17.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM