# LeetCode TwoSum Explained!

Given an array of integers `nums` and an integer `target`, return indices of the two numbers such that they add up to `target`.

You may assume that each input would have exactly one solution, and you may not use the same element twice.

You can return the answer in any order.

Example 1:

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

Example 2:

`Input: nums = [3,2,4], target = 6Output: [1,2]`

Example 3:

`Input: nums = [3,3], target = 6Output: [0,1]`

## Solution

`/** * @param {number[]} nums * @param {number} target * @return {number[]} */function twoSum(nums, target) {    const memo = {};    for (let i = 0; i < nums.length; i++) {        const needed = target - nums[i];        // console.log(needed)        let index2 = memo[needed];        // console.log("index2",index2,memo[needed],memo)        if (index2 != null) {            return [index2, i];        } else {            memo[nums[i]] = i;        }    }}`

explanation

• The code defines a function called `twoSum` that takes in an array of numbers `nums` and a target number `target`.
• The function uses an object `memo` as a hash table to store numbers as keys and their indices as values.
• The function iterates over each element in the `nums` array.
• For each element, it calculates the difference between the `target` and the current element and stores it in a variable called `needed`.
• The function checks if `needed` exists as a key in `memo`.
• If it does, the function returns an array containing the stored value (index of the first number) and the current index (index of the second number).
• If `needed` does not exist in `memo`, the function stores the current number and its index in `memo`.
• The function continues to iterate over the remaining elements in `nums` array.
• If a pair of numbers that add up to the `target` is found, the function returns their indices in an array.
• If no such pair is found, the function implicitly returns `undefined`.

Thanks for checking this out, I’m going to attend few interviews in the coming months and I want to share my learning with you.