---
title: '1. Two Sum'
description: You are given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target
sidebar:
  label: 'Two Sum'
  badge: 'Easy'
---

Array

::::warning
Can you come up with an algorithm that is less than O(n^2) time complexity?
::::

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

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

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

### Constraints:

- `2 <= nums.length <= 10^4`
- `-10^9 <= nums[i] <= 10^9`
- `-10^9 <= target <= 10^9`
- Only one valid answer exists.

## Approach

```mermaid
flowchart TD
  S(["twoSum(nums, target)"]) --> I["seen = {} — value to index"]
  I --> L{"more (i, num) in nums?"}
  L -- no --> E(["return []"])
  L -- yes --> C["complement = target - num"]
  C --> H{"complement in seen?"}
  H -- yes --> R(["return [seen[complement], i]"])
  H -- no --> W["seen[num] = i"]
  W --> L
```

## Solution

```py
class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        seen = {}
        for i, num in enumerate(nums):
            complement = target - num
            if complement in seen:
                return [seen[complement], i]
            seen[num] = i
        return []
```

## Explanation

[Two Sum - Leetcode 1 - HashMap - Python](https://www.youtube.com/watch?v=KLlXCFG5TnA)
