Дан массив целых чисел 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]:
Источник: наша задача на данных банковской выписки. Условие пересказано своими словами.
Давали на собеседовании?
Стр. 1Ctrl+Enter — запуск · Ctrl+Shift+Enter — отправка
Ожидаемый ответ не нужен: покажем, что вернула функция.
Здесь появится результат отправки.