Определение элементов, повторяющихся более одного раза

Подсчитайте частоты и оставьте ключи со счётчиком больше одного. Map естественно сохраняет порядок первого появления, а результат содержит каждое повторяющееся число ровно один раз.

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

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

Подсчитайте частоты и оставьте ключи со счётчиком больше одного. Map естественно сохраняет порядок первого появления, а результат содержит каждое повторяющееся число ровно один раз.

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

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

Условие

Дан список целых чисел. Требуется сформировать массив, содержащий каждый элемент, который встречается в исходном списке хотя бы дважды. В результирующем массиве каждый такой элемент должен присутствовать только один раз, независимо от количества его повторений в исходных данных.

Ответ

Подсчитайте частоты и оставьте ключи со счётчиком больше одного. Map естественно сохраняет порядок первого появления, а результат содержит каждое повторяющееся число ровно один раз.

function duplicates(numbers) {
  const counts = new Map();
  for (const value of numbers) counts.set(value, (counts.get(value) ?? 0) + 1);
  return [...counts].filter(([, count]) => count > 1).map(([value]) => value);
}

Для [3,1,3,2,1,3] получится [3,1]. Ни третье появление 3, ни дополнительные повторы не создают новых элементов результата. Входной массив остаётся неизменным. Ожидаемое время O(n), память O(k) по числу различных значений.

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

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

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

Подробнее