# Билет 02 — рабочий лист

## Условие

Дан массив целых чисел `nums` и целое число `target`. Верните индексы двух чисел, сумма которых равна `target`. Каждый вход имеет ровно одно решение, один и тот же элемент нельзя использовать дважды. Ответ можно вернуть в любом порядке.

```
Input:  nums = [2,7,11,15], target = 9  →  Output: [0,1]   (nums[0] + nums[1] = 9)
Input:  nums = [3,2,4],     target = 6  →  Output: [1,2]
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`.

## Решение — пиши здесь

```ruby
#
# Твоя реализация. Не забудь: проговаривай (пиши в комментариях) —
# 1) идею, 2) сложность по времени, 3) сложность по памяти,
# 4) граничные случаи.
#

def two_sum(nums, target)
  visited = {}

  nums.each_with_index do |num, i|
    compliment = target - num

    if visited.key?(compliment)
      return [visited[compliment], i]
    end

    visited[num] = i unless visited.key?(num)
  end

  nil
end
```

сложность O(n)
mem: O(n/2) -> O(n)
