题目描述:给定两个数组,编写一个函数来计算它们的交集。
LeetCode示例:
LeetCode链接:两个数组的交集
题意分析:
- 此题描述具有一定误导性,在示例一中,两数组的交集本应为[2,2],而题目给出的正确答案为[2],所以隐含的意思是:需要对交集中重复的元素去重。
- 我们先分别对两个数组元素进行去重,再求出交集,也能得到正确的结果
- 去完重复元素之后,遍历数组1,在数组2中查找是否存在相同元素,若存在则将这个元素放入交集中。
题目代码:
class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
// 用unordered_set对nums1去重
unordered_set<int> s1;
for(auto e:nums1)
{
s1.insert(e);
}
// 用unordered_set对nums2去重
unordered_set<int> s2;
for(auto e:nums2)
{
s2.insert(e);
}
vector<int> v;
for(auto e:s1)
{
if(s2.find(e)!=s2.end())
v.push_back(e);
}
return v;
}
};