Выбор ответа Junior Массивы и хеш-таблицы спрашивают часто обновлено

Есть ли дубликат

Вопрос

Что вернёт функция для [3, 1, 4, 1] и какая у неё сложность?

function hasDup(arr) {
  const seen = new Set();
  for (const x of arr) {
    if (seen.has(x)) return true;
    seen.add(x);
  }
  return false;
}

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: true, O(n). Встретив вторую 1, seen.has(1) даст true.

Варианты ответа

  1. false, O(n)
  2. true, O(n)правильный ответ
  3. true, O(n²)
  4. true, O(n log n)

Разбор

Встретив вторую 1, seen.has(1) даст true. Один проход, Set.has и Set.add O(1) в среднем: O(n) времени, O(n) памяти.

  • false неверно: дубликат есть.
  • O(n²) было бы с includes внутри цикла.
  • O(n log n) было бы с сортировкой и сравнением соседей.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.