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)
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]
}
}
}
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 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++)
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]
What do you think about this solution? 👇🤔
Top comments (0)