要求
- 给定两个数组nums,求两个数组交集
- 输出结果与元素在两个数组中出现的次数一致
- 不考虑输出结果的顺序
举例
- nums1=[1,2,2,1]
- nums2=[2,2]
- 结果:[2,2]
思路
- 使用map,记录nums1中元素及其出现次数
- 遍历nums2,将重复元素放入结果,同时将该元素出现次数减1
实现
1 class Solution{ 2 public: 3 vector<int> intersect(vector<int>& nums1, vector<int>& nums2){ 4 map<int,int> record; 5 for( int i = 0 ; i < nums1.size() ; i ++ ) 6 record[nums1[i]] ++; 7 8 vector<int> resultVector; 9 for( int i = 0 ; i < nums2.size() ; i ++ ) 10 if( record[nums2[i]] > 0 ){ 11 resultVector.push_back( nums2[i] ); 12 record[nums2[i]]--; 13 } 14 return resultVector; 15 } 16 };