给定两个数组,编写一个函数来计算它们的交集。
示例 1:
输入: nums1 = [1,2,2,1], nums2 = [2,2] 输出: [2,2]
示例 2:
输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4] 输出: [4,9]
说明:
进阶:
1 class Solution { 2 public: 3 vector<int> intersect(vector<int>& nums1, vector<int>& nums2) { 4 map<int,int> m1; 5 map<int,int> m2; 6 7 for(int i=0;i<nums1.size();i++){ 8 if(m1.find(nums1[i])!=m1.end()){ 9 m1[nums1[i]]++; 10 }else{ 11 m1[nums1[i]]=1; 12 } 13 } 14 15 for(int i=0;i<nums2.size();i++){ 16 if(m2.find(nums2[i])!=m2.end()){ 17 m2[nums2[i]]++; 18 }else{ 19 m2[nums2[i]]=1; 20 } 21 } 22 23 map<int,int>::iterator it1; 24 map<int,int>::iterator it2; 25 vector<int> result; 26 27 for(it1=m1.begin();it1!=m1.end();it1++){ 28 it2=m2.find(it1->first); 29 if(it2!=m2.end()){ 30 int counter = it1->second >= it2->second ? it2->second : it1->second; 31 for(int i=0;i<counter;i++){ 32 result.push_back(it1->first); 33 } 34 } 35 } 36 37 return result; 38 39 40 } 41 };
原文:https://www.cnblogs.com/mxf1997/p/10575138.html