# \#349 Intersection of Two Arrays ## *給定兩個整數陣列nums1/nums2, 回傳兩陣列的重複元素(元素必須唯一)* ## Log - build 20210703 by syhuang ## 參考解 - 運用了Set + filter + 擴展運算符: - Set: 每個元素唯一 - filter: 對陣列中每個元素進行運算, 只會回傳符合運算條件的元素 - 擴展運算符(...): 把運算符後面接的物件, 把物件中的每個元素以逗號為區隔做展開 - 速度最快(leetcode Runtime結果90%以上) ```javascript= function intersection(nums1, nums2) { const set = new Set(nums1); return [...new Set(nums2.filter(n => set.has(n)))]; } ``` ## 嘗試2 - 用set只能存放唯一元素的特性,嘗試加快處理速度(leetcode Runtime結果約50%) ```javascript= var intersection = function(nums1, nums2) { const s = new Set(nums1); let result = []; s.forEach(function(value,key,set){ if(typeof(nums2.find(function(elm){return elm===value}))!='undefined') result.push(value); }); return result; }; ``` ## 初見 - 用其中一個陣列為基準跑迴圈, 檢查每個元素是否存在另一陣列, 而且不存在result(回傳結果) - 速度較慢(leetcode Runtime結果10~20%) ```javascript= var intersection = function(nums1, nums2) { let result = []; for(let i=0; i<nums1.length; i++){ let elmMatch = function(elm){ return elm===nums1[i] } if(typeof(nums2.find(elmMatch))!='undefined'){ if(typeof(result.find(elmMatch))=='undefined') result.push(nums1[i]) //回傳結果的元素必須唯一 } } return result; }; ``` ## 備註 ## 參考 - [參考解](https://leetcode.com/problems/intersection-of-two-arrays/discuss/82187/JavaScript-solution-with-Set) ###### tags: `leetcode`, `leetcode-easy`