# Solving Array Problems: Two Sum

## Algorithms and Data Structures From Zero to Hero

## Problem

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.

## Understanding with examples

**Example 1:**

**Input:** nums = [1,2,3,4,5], target = 8

**Output:** [2,4]

**Explanation:** Because nums[2] + nums[4] == 8, we return [2, 4].

## Analysis — BigO

**Solution 1:**

My first solution will be to iterate through the array starting at index 0 and then create a nested loop to iterate through the rest of the array elements.

The value **a** represents the value of the upper loop and the value **b** the index of the elements to the right of the array that will be iterated in the inner loop, until the indexes of the two numbers add up to the target.

If a at index 0 plus one of the elements on the right hand side of the array is not the sum of the target, the pointer changes to the next one until `a`

and `b`

add up to the target.

As this is a nested loop, this operation will take O(nxn) which is actually **O(n^2)**.

**Solution 2:**

I can do it a better.

The second solution will be to create an object. The object will have the value, and the index.

I’ll have to create an `obj`

variable and iterate through the array. On each iteration it will add the item and the related index.

Next, I’ll create another (non-nested) loop, iterate through the array and create a variable `augend`

the number to which an `addend `

is added (mathematical and computer science term for the number on the left in an addition, the number on the right is the addend).

Finally, If the `obj`

has the `augend`

, we return the output.

These separates iterations will take **O(n)**.

**Solution 3:**

Similar to the second solution but more simple using the map function.

Create a new Map() `map`

and an `augend`

variable, then iterate through the array, get the `augend`

and check if is in the map if isn’t add the value and index to the map until found it.

## Code

**Solution 1:**

**Solution 2:**

**Solution 3:**

## Summary

This is an easy problem, if there is something you don’t understand don’t be afraid to leave a comment.

This article is part of the series **Algorithms and Data Structures From Zero to Hero**.

👋 **Let’s be friends!** Follow me on **Twitter** and connect with me on **LinkedIn**. Don’t forget to follow me here on **Medium** as well.