Хитрость заключается в том, чтобы сначала создать словарь. В котором, в ключах будут все числа из
nums, а в значениях индексы этих чисел в массиве:nums = [2,7,11,15]
d = {2: 0, 7: 1, 11: 2, 15: 3}Тогда мы сможем быстро найти в этом словаре индекс того числа, которого нам не хватает, чтобы в сумме получить
targetНа интервью важно сказать, про сложность этого алгоритма:
- По времени: O(n) (о от n) - мы запустили 2 цикла, но последовательно, а не 1 в другом, как в предыдущем решении
- По памяти: O(n) (о от n) - мы выделили дополнительную память под словарь
Эту задачу можно решить и за один проход цикла, но я вас уверяю, что любому интервьюеру будет достаточно и этого решения.
Важно запомнить паттерн, когда мы сначала создаем какую-то вспомогательную структуру данных (обычно это словарь), а затем с его помощью решаем задачу 😎
