Получить элементы, уникальные для каждого из двух массивов

Преобразуйте оба массива в Set, затем отберите элементы, отсутствующие в противоположном множестве. Так дубликаты не попадут в результат, как требует второй пример.

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

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

Преобразуйте оба массива в Set, затем отберите элементы, отсутствующие в противоположном множестве. Так дубликаты не попадут в результат, как требует второй пример.

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

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

Условие

Даны два числовых массива arrA и arrB. Необходимо вернуть массив result, состоящий из двух вложенных массивов:

result[0] – числа из arrA, которые отсутствуют в arrB; result[1] – числа из arrB, которые отсутствуют в arrA.

Примеры: Вход: arrA = [1,2,3], arrB = [2,4,6] Выход: [[1,3],[4,6]]

Вход: arrA = [1,2,3,3], arrB = [1,1,2,2] Выход: [[3], []]

Ответ

Преобразуйте оба массива в Set, затем отберите элементы, отсутствующие в противоположном множестве. Так дубликаты не попадут в результат, как требует второй пример.

function difference(arrA, arrB) {
  const a = new Set(arrA), b = new Set(arrB);
  return [[...a].filter(value => !b.has(value)),
          [...b].filter(value => !a.has(value))];
}

Порядок внутри каждой части соответствует первому появлению числа во входном массиве. Это две направленные разности множеств, а не одно объединение. Среднее время O(n + m) при обычной хеш-реализации Set, память O(n + m). Пустые массивы обрабатываются без отдельных условий.

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

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

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

Подробнее