给定两个数组,编写一个函数来计算它们的交集
法一:将两个数组各放入两个哈希里,遍历最小的数组的哈希,寻找另一个哈希里是否有一样的值。
class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
unordered_set<int> set1,set2;
for(int& num :nums1){
set1.insert(num);
}
for(int& 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())getIntersection(set2,set1);
vector<int> res;
for(int num:set1){
if(set2.count(num))
res.push_back(num);
}
return res;
}
};
法二:将两个数组各排序,然后使用两个指针来寻找相同值。