题目
点击前往
给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。
示例 1:
1 2
| 输入:nums1 = [1,2,2,1], nums2 = [2,2] 输出:[2]
|
示例 2:
1 2 3
| 输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4] 输出:[9,4] 解释:[4,9] 也是可通过的
|
解题思路
方法一:
- 利用哈希表,存储nums1中的值。
- 遍历nums2,如果哈希表中含有这个值,则将其存在result中。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
var intersection = function(nums1, nums2) { let hashmap = new Map(); let result = new Array(); nums1.forEach(e=>{ hashmap.set(e,(hashmap.get(e) || 0) + 1); }) nums2.forEach(e=>{ if(hashmap.has(e)){ if(result.indexOf(e) < 0){ result.push(e); } } }) return result; };
|
方法二:
- 利用Set数据类型的特点,将两个数组转为Set。
- 遍历nums2,如果set1中含有这个值,则将其存在result中。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
var intersection = function(nums1, nums2) { let set1 = new Set(nums1); let set2 = new Set(nums2); let result = new Array(); set2.forEach( e =>{ if(set1.has(e)){ result.push(e); } }) return result; };
|