LeetCode #1 — Напишите функцию, которая принимает массив чисел и target и возвращает индексы двух чисел, сумма которых равна target.

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

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

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

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

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

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

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

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

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

Для [3, 3] и 6 результат [0, 1]; при отсутствии пары возвращается null. Для произвольных дробей заранее определяют допустимую погрешность.

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

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

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

Подробнее