DEV Community

Cesar Del rio
Cesar Del rio

Posted on

#39 - Two Sum CodeWars Kata (6 kyu)

Instructions

Task
Write a function that takes an array of numbers (integers for the tests) and a target number. It should find two different items in the array that, when added together, give the target value. The indices of these items should then be returned in a tuple / list (depending on your language) like so: (index1, index2).

For the purposes of this kata, some tests may have multiple answers; any valid solutions will be accepted.

The input will always be valid (numbers will be an array of length 2 or greater, and all of the items will be numbers; target will always be the sum of two different items from that array).

Based on: http://oj.leetcode.com/problems/two-sum/

Examples:

twoSum [1, 2, 3] 4 === (0, 2)
Enter fullscreen mode Exit fullscreen mode

My solution:

function twoSum(numbers, target) {
  for(let i = 0; i<numbers.length; i++){
    for(let j = i+1; j<numbers.length; j++){
      let res = numbers[i] + numbers[j]
      if(res == target) return [i,j]
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

Explanation

First I made a loop that will iterate through all the elements of the array

for(let i = 0; i<numbers.length; i++)
Enter fullscreen mode Exit fullscreen mode

Inside of this loop I used another loop that will iterate through all the elements that are after the one that is being iterated in the last loop.

for(let j = i+1; j<numbers.length; j++)
Enter fullscreen mode Exit fullscreen mode

In each iteration I'll check if the sum of the element iterated in the first loop (i) plus the one being iterated in the last loop (j) is equal to the target, it'll return their positions

let res = numbers[i] + numbers[j]
if(res == target) return [i,j]
Enter fullscreen mode Exit fullscreen mode

What do you think about this solution? 👇🤔

My Github
My twitter
Solve this Kata

Discussion (0)