1. Problem Description
Given two arrays, write a function to compute their intersection.
Example:
Given nums1 = [1, 2, 2, 1], nums2 = [2, 2], return [2].
Note:
Each element in the result must be unique.
The result can be in any order.
返回两数组重合部分,可无序。
349要求去重,350不去重,次数不变。
2. My solution
Hash表:
No.349
vector<int> intersection(vector<int>& nums1, vector<int>& nums2)
{
int len1=nums1.size(),len2=nums2.size();
vector<int>res;
map<int,int>h1;
for(int i=0; i<len1; i++)
h1[nums1[i]]=1;
for(int i=0;i<len2;i++)
{
int tmp=nums2[i];
if(h1[tmp]>0)
{
res.push_back(tmp);
h1[tmp]=0;
}
}
return res;
}
No.350
vector<int> intersect(vector<int>& nums1, vector<int>& nums2)
{
int len1=nums1.size(),len2=nums2.size();
vector<int>res;
map<int,int>h1;
for(int i=0; i<len1; i++)
h1[nums1[i]]++;
for(int i=0; i<len2; i++)
{
int tmp=nums2[i];
if(h1[tmp]>0)
{
res.push_back(tmp);
h1[tmp]--;
}
}
return res;
}