В nums1 нет в nums2 только числа 3 (учитывается один раз) → answer[0] = [3]. Все числа nums2 есть в nums1 → answer[1] = [].
Решение
Решение
// Временная сложность: O(N + M)// Пространственная сложность: O(N + M)var findDifference = function(nums1, nums2) { // O(N) - создание Set (проход по всем элементам nums1) // O(N) space - память под хранение уникальных элементов const s1 = new Set(nums1); // O(M) - создание Set (проход по всем элементам nums2) // O(M) space const s2 = new Set(nums2); // [...s1] - это O(N) // .filter - проходит по N элементам // .has(x) - выполняется за O(1) // Итого строка: O(N) const res1 = [...s1].filter(x => !s2.has(x)); // Аналогично: O(M) const res2 = [...s2].filter(x => !s1.has(x)); return [res1, res2];};
Решение 2 (Two Pointers + HashMap)
// Временная сложность: O(N + M)// Пространственная сложность: O(N + M)var findDifference = function(nums1, nums2) { const map1 = new Map(); const map2 = new Map(); // O(N) — ключи остаются числами for (const num of nums1) map1.set(num, true); // O(M) for (const num of nums2) map2.set(num, true); const res1 = []; const res2 = []; for (const key of map1.keys()) { if (!map2.has(key)) { res1.push(key); } } for (const key of map2.keys()) { if (!map1.has(key)) { res2.push(key); } } return [res1, res2];};