题目:
给定两个数组,编写一个函数来计算它们的交集。
示例 1:
输入:nums1 = [1,2,2,1], nums2 = [2,2]
输出:[2]
示例 2:输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出:[9,4]说明:
输出结果中的每个元素一定是唯一的。
我们可以不考虑输出结果的顺序。
思路:
1. 将第一个数组放入map中,并标记其数值为true
2. 遍历第二个数组,如果第二个数组中的值在第一个数组中存在,并且该值未被比较过,则按顺序放入第二个数组中
3. 第二个数组的前k个值就是两个数组的交集
代码实现:
/**
* @param {number[]} nums1
* @param {number[]} nums2
* @return {number[]}
*/
var intersection = function(nums1, nums2) {
const map = new Map();
for(const num of nums1) {
map.set(num, true);
}
let k = 0;
for(const num of nums2) {
const value = map.get(num);
if(value) {
nums2[k] = num;
k++;
map.set(num, false);
}
}
return nums2.slice(0, k)
};