Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Pair of elements from a specified array whose sum equals a specific target number

I am in mid of my JavaScript session. Find this code in my coding exercise. I understand the logic but I didn't get this map[nums[x]] condition.

function twoSum(nums, target_num) {  
    var map = [];  
    var indexnum = [];  

    for (var x = 0; x < nums.length; x++)  
    {  
        if (map[nums[x]] != null)  
        // what they meant by map[nums[x]]
        {  
            index = map[nums[x]];  
            indexnum[0] = index+1;  
            indexnum[1] = x+1;  
            break;  
        }  
        else  
        {  
            map[target_num - nums[x]] = x;  
        }  
    }  
    return indexnum;  
    }  
console.log(twoSum([10,20,10,40,50,60,70],50));

I am trying to get the Pair of elements from a specified array whose sum equals a specific target number. I have written below code.

function arraypair(array,sum){
        for (i = 0;i < array.length;i++) {
            var first = array[i];
            for (j = i + 1;j < array.length;j++) {
                var second = array[j];

                if ((first + second) == sum) {
            alert('First: ' + first + ' Second ' + second + ' SUM ' + sum);
            console.log('First: ' + first + ' Second ' + second);
                }
            }

        }
}

var a = [2, 4, 3, 5, 6, -2, 4, 7, 8, 9];

arraypair(a,7);

Is there any optimized way than above two solutions? Can some one explain the first solution what exactly map[nums[x]] this condition points to?

like image 688
ShaMoh Avatar asked May 01 '16 13:05

ShaMoh


People also ask

How do you find all pairs of elements in an array whose sum is equal to a given number?

Follow the steps below to solve the given problem: Initialize the count variable with 0 which stores the result. Iterate arr and if the sum of ith and jth [i + 1…..n – 1] element is equal to sum i.e. arr[i] + arr[j] == sum, then increment the count variable. Return the count.

How do you find all pairs of an integer array whose sum is equal to a given number using JavaScript?

function arraypair(array,sum){ for (i = 0;i < array. length;i++) { var first = array[i]; for (j = i + 1;j < array. length;j++) { var second = array[j]; if ((first + second) == sum) { alert('First: ' + first + ' Second ' + second + ' SUM ' + sum); console.

How do you find the sum of the pairs of an array?

Use two loops and check A[i] + A[j] == K for each pair (i, j) in A[]. If there exists a pair with sum equals to K then return true. By end of both loops, If you didn't find such a pair then return false. Time Complexity = O(n²) and Space Complexity = O(1).


1 Answers

Using HashMap approach using time complexity approx O(n),below is the following code:

let twoSum = (array, sum) => {
    let hashMap = {},
      results = []

        for (let i = 0; i < array.length; i++){
            if (hashMap[array[i]]){
                results.push([hashMap[array[i]], array[i]])
            }else{
                hashMap[sum - array[i]] = array[i];
            }
          }
          return results;
    }
console.log(twoSum([10,20,10,40,50,60,70,30],50));

result:

{[10, 40],[20, 30]}

I think the code is self explanatory ,even if you want help to understand it,let me know.I will be happy enough to for its explanation.

Hope it helps..

like image 108
Pratswinz Avatar answered Nov 15 '22 08:11

Pratswinz