Skip to main content

1. Two Sum

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

class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
found = {}
for idx, val in enumerate(nums):
if target-val in found:
return (idx, found[target-val])
else:
found[val] = idx

Time Complexity: O(n)

Space Complexity: O(n)

Explanation

x + y = z

The key to this problem is realizing that if the target is z and we're currently checking if y is a piece of our answer, then x would have to be z-y. Now that we know what we're looking for we can simply check if we've previously seen it (this can be made efficient with the use of a dictionary).