简单思路:先遍历第一个数组,使用 map 记录出现的数字和次数,然后遍历第二个数组,当存在相同数字的时候把对应的 map 上的次数 - 1,推入到结果数组中,就是我们需要的答案了
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/**
* @param {number[]} nums1
* @param {number[]} nums2
* @return {number[]}
*/
var intersect = function (nums1, nums2) {
const map = {};
const res = [];
for (let item of nums1) {
map[item] = map[item] ? map[item] + 1 : 1;
}
for (let item of nums2) {
if (map[item]) {
map[item]--;
res.push(item);
}
}
return res;
};
intersect([1, 2, 2, 1], [2, 2]);