Войти Регистрация
Алгоритмы

1. Два числа с нужной суммой

Лёгкая

Дан массив целых чисел nums и число target. Найдите два разных элемента, сумма которых равна target, и верните их индексы.

Ответ всегда есть, и он один. Один и тот же элемент дважды брать нельзя. Порядок индексов не важен: [1, 3] и [3, 1] засчитаем оба.

В работе: В выписке за месяц найти два платежа, которые вместе дают сумму возврата 4 870 ₽.

Пример 1

Ввод
nums = [3, 8, 12, 5]
target = 13
Вывод
[1, 3]

8 + 5 = 13 — элементы с индексами 1 и 3.

Пример 2

Ввод
nums = [4, 4]
target = 8
Вывод
[0, 1]

Одинаковые значения — разные элементы.

Пример 3

Ввод
nums = [-2, 7, 11, -5]
target = -7
Вывод
[0, 3]

Ограничения

  • 2 ≤ длина nums ≤ 10 000 (в больших тестах JavaScript — до 200 000)
  • −10⁹ ≤ nums[i], target ≤ 10⁹
  • Перебор всех пар на 10 000 элементах — около 50 млн сложений, в лимит не укладывается.
  • Лимит — 1 с на тест.
Как вызывается ваш код Читать ввод и печатать ответ не нужно: мы вызываем функцию на каждом тесте и сравниваем то, что она вернула. print() и console.log() уходят в консоль.
def two_sum(nums: list[int], target: int) -> list[int]:
МассивХеш-таблицацельO(n)

Источник: наша задача на данных банковской выписки. Условие пересказано своими словами.