题目描述
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)){
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;
}
};