答案一:
class Solution {
public:
vector<int> intersection(vector<int>& a, vector<int>& b) {
sort(a.begin(),a.end());
sort(b.begin(),b.end());
vector<int> ans;
for(int i=0,ll=0;i<b.size();i++) if(i==0||b[i]!=b[i-1])
{
while(ll<a.size()&&a[ll]<b[i]) ll++;
if(ll<a.size()&&a[ll]==b[i]) ans.push_back(b[i]);
}
return ans;
}
};
答案二:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
sort(nums1.begin(),nums1.end());
sort(nums2.begin(),nums2.end());
vector<int>res;
const int n1=nums1.size();
const int n2=nums2.size();
int i=0,j=0;
for(;i<n1&&j<n2;++i,++j){
if(nums1[i]==nums2[j]){
res.insert(res.begin(),nums1[i]);
}
if(nums1[i]<nums2[j])j--;
else if(nums1[i]>nums2[j])i--;
}
for(i=1;i<res.size();++i){
if(res[i]==res[i-1]){
res.erase(res.begin()+i-1,res.begin()+i);
i--;
}
}
return res;
}