LeetCode求两个数组的交集
原创
©著作权归作者所有:来自51CTO博客作者BugMaker999的原创作品,请联系作者获取转载授权,否则将追究法律责任
题目描述

set集合
class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2){
set<int> s(nums1.begin(), nums1.end());
vector<int> res;
for(int num : nums2){
if(s.erase(num)){//删除成功返回1,失败返回0
res.push_back(num);
}
}
return res;
}
};

排序 + 双指针
class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2){
sort(nums1.begin(), nums1.end());
sort(nums2.begin(), nums2.end());
int i = 0;
int j = 0;
set<int> s;
while(i < nums1.size() && j < nums2.size()){
if(nums1[i] == nums2[j]){
s.insert(nums1[i]);
i++;
j++;
}else if(nums1[i] > nums2[j]){
j++;
}else{
i++;
}
}
vector<int> res(s.begin(), s.end());
return res;
}
};
