LeetCode 349. Intersection of Two Arrays
題目
Given two arrays, write a function to compute their intersection.
Example:
Given nums1 = [1, 2, 2, 1], nums2 = [2, 2], return [2].
Note:
Each element in the result must be unique.
The result can be in any order.
翻譯
尋找兩個陣列的交集。
範例:
nums1 = [1, 2, 2, 1],nums2 = [2, 2],return [2]。
注意:
同樣的數字只出現一次,回傳的陣列內容不限排序。
思路
- 先判斷nums1與nums2長度誰比較短,我們就稱它叫ary拿來跑迴圈,較長的陣列叫store。
- ary[i]如果可以在store中找到值,表示這是交集的數字。
- 判斷結果陣列(result)是否已經有交集數字,如果沒有就新增到結果陣列(result)中。
解題
/**
* @param {number[]} nums1
* @param {number[]} nums2
* @return {number[]}
*/
var intersection = function(nums1, nums2) {
var result = [];
var store; // 長array
var ary; // 短array
// 判斷nums1,nums2長度
if(nums1.length > nums2.length){
store = nums1;
ary = nums2;
} else {
store = nums2;
ary = nums1;
}
// 只需需要跑較短的array就行
for(var i = 0 ; i < ary.length ; i++){
var value = ary[i];
// 如果可以在長array中找到目前的值,而且在結果array中找不到,代表這個值是新的交集
if(store.indexOf(value) >= 0 && result.indexOf(value) == -1){
result.push(value);
}
}
return result;
};