Skip to main content

Command Palette

Search for a command to run...

Two Sum (coding challenge -02)

Published
2 min read
T

I am an ex-investment bank analyst who has turned into a software developer. I became interested in moving into the tech industry about a year ago. I am a student of Full-stack software engineering Bootcamp( CodeYourFuture) which has taught me how to program in JavaScript.So far I have learned about agile development, making vanilla JS projects & testing. I am progressing in my tech knowledge by learning React.js.Besides this, I also practice coding katas on codewars.com, and currently, I am at kata level 05. I enjoy learning new tech tools, and frameworks e.g react. Looking forward to building more projects using react framework. I am also a mum of one kid & expecting my second baby. I like cooking & listening to classical music.

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; the target will always be the sum of two different items from that array).

Explanation

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

for(let i = 0; i<numbers.length; i++)

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

for(let j = i+1; j<numbers.length; j++)

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 complement = numbers[i] + numbers[j]
if(complement == target) return [i,j]

so the final solution is -

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