题目:
Given two arrays, write a function to compute their intersection.
Example:
Given nums1 = [1, 2, 2, 1]
, nums2 = [2, 2]
, return [2, 2]
.
note:
- Each element in the result should appear as many times as it shows in both arrays.
- The result can be in any order.
solution:先对两个数组进行排序,然后建立两个指针,分别指向两个数组的头,比较指针所指向的是数字,若果相等,则加入结果,若不相等则小的对应的指针往前移动一位。
class Solution {
public:
vector<int> intersect(vector<int>& nums1, vector<int>& nums2) {
sort(nums1.begin(),nums1.end());
sort(nums2.begin(),nums2.end());
vector<int> res;
int iter1=0;
int iter2=0;
while(iter1<nums1.size()&&iter2<nums2.size())
{
if(nums1[iter1]==nums2[iter2])
{ res.push_back(nums1[iter1]);
iter1++;
iter2++;
}
else if(nums1[iter1]<nums2[iter2])
iter1++;
else
iter2++;
}
return res;
}
};
public:
vector<int> intersect(vector<int>& nums1, vector<int>& nums2) {
sort(nums1.begin(),nums1.end());
sort(nums2.begin(),nums2.end());
vector<int> res;
int iter1=0;
int iter2=0;
while(iter1<nums1.size()&&iter2<nums2.size())
{
if(nums1[iter1]==nums2[iter2])
{ res.push_back(nums1[iter1]);
iter1++;
iter2++;
}
else if(nums1[iter1]<nums2[iter2])
iter1++;
else
iter2++;
}
return res;
}
};