# Two Sum — LeetCode

**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.

**SOLUTION:**

Brute force method:

The brute force solution is pretty self-explanatory. I created a nested loop that loops from 0 to the length of the input array. If i is the same as j, it will continue onto the next iteration. If **nums[i] + nums[j] == target**, we have our two indexes! From here, we return an array of **[i, j]**.

More efficient solution using Python dictionaries:

The second solution using dictionaries is slightly more complex. The first thing we do is construct an empty dictionary. Next, we assign each element in the array to a key and each index to a value. An input array of **[16, 24, 9] **would result in a map of **{16: 0, 24: 1, 9: 2}**. We loop from 0 to len(nums) once more and assign **complement** to our input target subtracted by **nums[i]**. This is basically just a different algebra form from my brute force **a + b = target**. Instead, we have **b = target - a**. **Complement** is the number that we search the dictionary for. When **complement** is added to **nums[i]** we should get the **target**. In the conditional statement, we check if the **complement** is in the dictionary and that the value of the **complement** key is not equal to i (since we can’t use the same element more than once).

This problem took me a while to figure out. At first, I could only solve using the brute-force method. After some hints, I was able to get the dictionary method working. First LeetCode problem… DONE ✅.