349. 两个数组的交集
题目描述(难度:简单)
- 给定两个数组,编写一个函数来计算它们的交集。
说明:
- 输出结果中的每个元素一定是唯一的。
- 我们可以不考虑输出结果的顺序。
示例1:
Input: nums1 = [1,2,2,1], nums2 = [2,2]
Output: [2]
示例2:
Input: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
Output: [9,4]
解题思路
- 数组 includes:遍历 num1,判断每个值是否在 num2,如果同时在 2 个数组,并且不是重复值,则添加
- Set 结构:利用 Set 将 num1 和 num2 去重,遍历 num1,判断每个值 num2 是否存在
代码
/**
* 利用 includes
* @param {number[]} nums1
* @param {number[]} nums2
* @return {number[]}
*/
var intersection = function(nums1, nums2) {
let res = [];
for(let i = 0; i < nums1.length; i++) {
let key = nums1[i];
// 判断是否重复值,且 num2 是否存在
if (!res.includes(key) && nums2.includes(key)) {
res.push(key);
}
}
return res;
};
/**
* Set 结构
* @param {number[]} nums1
* @param {number[]} nums2
* @return {number[]}
*/
var intersection = function(nums1, nums2) {
// 去重
nums1 = new Set(nums1);
nums2 = new Set(nums2);
let res = [];
for(let key of nums1.keys()) {
// num2 如果存在该值,则是交集值
if (nums2.has(key)) {
res.push(key);
}
}
return res;
};