例题描述
给定两个数组,编写一个函数来计算它们的交集。
【注】:
输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。
我们可以不考虑输出结果的顺序。
示例 1:
- 输入:
nums1 = [1,2,2,1], nums2 = [2,2]
- 输出:
[2,2]
示例 2:
- 输入:
nums1 = [4,9,5], nums2 = [9,4,9,8,4]
- 输出:
[4,9]
解题思路
交集即两集合共有的元素的集合。
上篇:【 https://blog.csdn.net/qq_42351880/article/details/97962627 】
与上一篇博客求数组交集的不同在于:非去重输出
思路也很简单,请看代码:
代码实现
class Solution {
public:
vector<int> intersect(vector<int>& nums1, vector<int>& nums2) {
unordered_map<int,int> dict;
vector<int> ret;
for(auto e : nums1){
dict[e]++;
}
for(auto e : nums2){
if(dict.count(e)){
ret.push_back(e);
dict[e]--;
if(dict[e] == 0)
dict.erase(e);
}
}
return ret;
}
};
链接:https://leetcode-cn.com/problems/intersection-of-two-arrays/