思路:
- 消除数组里的重复数字
- 遍历短的数组
- 查找在另一个数组里是否存在相同数字
-
将相同的数字存起来
C++代码:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
unordered_set<int> set1,set2; //将num数组插入到set里可以保证不会有重复元素
for(auto a:nums1)
{
set1.insert(a);
}
for(auto a:nums2)
{
set2.insert(a);
}
vector<int> ans;
if(set1.size()>set2.size()) //求交集只需遍历短数组就行
{
for(auto a:set2)
{
if(set1.count(a)) //查找在另一容器里是否存在该元素
{
ans.push_back(a); //将重复元素插入
}
}
}
else
{
for(auto a:set1)
{
if(set2.count(a))
{
ans.push_back(a);
}
}
}
return ans;
}