Задача Two Sum: дан массив чисел и целевое число target. Найдите индексы двух чисел, сумма которых равна target. Какова сложность вашего решения?

Проходите массив один раз, сохраняя уже встреченные числа и их индексы. Для текущего числа ищите дополнение target − value.

Короткий ответ

Что ответить на собеседовании

Проходите массив один раз, сохраняя уже встреченные числа и их индексы. Для текущего числа ищите дополнение target − value.

Подробный разбор

Ответ с пояснениями

Проходите массив один раз, сохраняя уже встреченные числа и их индексы. Для текущего числа ищите дополнение target − value.

function twoSum(nums, target) {
  const seen = new Map();
  for (let i = 0; i < nums.length; i++) {
    const needed = target - nums[i];
    if (seen.has(needed)) return [seen.get(needed), i];
    seen.set(nums[i], i);
  }
  return null;
}

Индекс записывается после поиска, поэтому один элемент не используется дважды. Для обычной хеш-таблицы ожидаемое время O(n), дополнительная память O(n). Предполагаются конечные числа с подходящей для задачи точностью.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее