问题描述:
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.
AC代码如下:
vector<int> intersect(vector<int>& nums1, vector<int>& nums2)
{
vector<int>res;
multiset<int>set1(nums1.begin(),nums1.end());
multiset<int>set2(nums2.begin(),nums2.end());
multiset<int>::iterator it1 = set1.begin();
multiset<int>::iterator it2 = set2.begin();
while(it1 != set1.end() && it2 != set2.end())
{
if(*it1 == *it2)
{
res.push_back(*it1);
it1++;
it2++;
}
else if(*it1 < *it2)
{
it1++;
}
else
{
it2++;
}
}
return res;
}