349.两个数组的交集
思路:
1.利用哈希表存储nums1、nums2中元素
2.判断哪个哈希表长,然后遍历较小的集合,判断其中的每个元素是否在另一个集合中,如果元素也在另一个集合中,则将该元素添加到返回值
class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
//1.利用哈希表存储nums1、nums2中元素
//2.判断哪个哈希表长,然后遍历较小的集合,判断其中的每个元素是否在另一个集合中,如果元素也在另一个集合中,则将该元素添加到返回值
unordered_set<int> set1,set2;
for(auto &num:nums1){
set1.insert(num);
}
for(auto &num:nums2){
set2.insert(num);
}
return getIntersection(set1,set2);
}
vector<int> getIntersection(unordered_set<int> &set1,unordered_set<int> &set2)
{
//比较哈希表长度
if(set1.size()>set2.size())
return getIntersection(set2,set1);
//遍历存储
vector<int> intersection;
for(auto num:set1){
if(set2.count(num)){ //在set2中查找num的值,找到插入到新数组中
intersection.push_back(num);
}
}
return intersection;
}
};