刚开始想对其中一个长度较大的数组进行排序然后利用长度较小的数组进行查询,但是发现这种方法对于长度较小的有重复元素的交集的数组就不行了,因为它无法区分是搜索了哪个元素。
[1,2,2]
[1,1]
class Solution {
public:
vector<int> intersect(vector<int>& nums1, vector<int>& nums2) {
vector<int>nums3;
int size1=nums1.size();
int size2=nums2.size();
sort(nums1.begin(),nums1.end()) ;
sort(nums2.begin(),nums2.end()) ;
int p1=0,p2=0;//p1,p2是指向nums1或者nums2的指针。
while(p1<size1&&p2<size2) {
if(nums1[p1]==nums2[p2]){
nums3.push_back(nums1[p1]);
}
else if(nums1[p1]<nums2[p2]){
p1++;
}
else{
p2++;
}
}
return nums3;
}
};