第一种方法是把数组放在map中进行比较。
第二种方法是将数组排好序后一次比较。
Solution 1
vector<int> Solution::intersect(vector<int>& nums1, vector<int>& nums2)
{
vector<int> result;
map<int, int> m;
for(int i = 0; i < nums1.size(); i++)
m[nums1[i]] ++;
for(int i = 0; i < nums2.size(); i++)
{
m[nums2[i]] --;
if(m[nums2[i]] >= 0)
result.push_back(nums2[i]);
}
return result;
}
Solution 2
vector<int> Solution::intersect(vector<int>& nums1, vector<int>& nums2)
{
vector<int> result;
sort(nums1.begin(), nums1.end());
sort(nums2.begin(), nums2.end());
for(int i = 0, j = 0; i < nums1.size() && j < nums2.size();)
{
if(nums1[i] == nums2[j])
{
result.push_back(nums1[i]);
i++;
j++;
}
else if(nums1[i] > nums2[j]) j++;
else i++;
}
return result;
}