Преобразуйте оба массива в 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). Пустые массивы обрабатываются без отдельных условий.