Two Sum (Сумма двух чисел)

Описание: Дан массив целых чисел nums и целевое значение target. Верните индексы двух чисел из массива, сумма которых равна target. Предполагается, что существует ровно одно решение, и нельзя использовать один и тот же элемент дважды.

Вы можете вернуть ответ в любом порядке.

Пример 1:

Вход: nums = [3,4,5,6], target = 7
Выход: [0,1]
Объяснение: nums[0] + nums[1] = 3 + 4 = 7

Пример 2:

Вход: nums = [4,5,6], target = 10
Выход: [0,2]
Объяснение: nums[0] + nums[2] = 4 + 6 = 10

Ограничения:

2 <= nums.length <= 10⁴

-10⁹ <= nums[i] <= 10⁹

-10⁹ <= target <= 10⁹

Существует только одно правильное решение

Рекомендуемая временная и пространственная сложность

Стремитесь к решению со временной сложностью O(n) и пространственной сложностью O(n), где n - длина массива nums.


Подсказка 1

Прямолинейное решение - использовать два вложенных цикла для перебора всех возможных пар чисел. Это даст временную сложность O(n²). Можете ли вы придумать более эффективное решение?


Подсказка 2

Для каждого числа x, вы ищете другое число y, такое что x + y = target. Другими словами, вы ищете complement = target - x. Как можно быстро проверить, существует ли complement в массиве?


Подсказка 3

Хеш-таблица позволяет выполнять поиск за O(1). Вы можете хранить каждое просмотренное число и его индекс в хеш-таблице. Для текущего числа проверяйте, есть ли в таблице complement.

Эта задача тестирует навыки работы с массивами и хеш-таблицами. Она помогает развивать понимание оптимизации алгоритмов, пространственно-временных компромиссов и эффективного поиска в массивах. Решение задачи улучшает умение работать с индексами, хешированием и базовыми структурами данных.

Входные параметры :

[3,4,5,6], 7

Ожидаемый результат

[0,1]