[刷题] 350 Intersection of Two Arrays

要求

  • 给定两个数组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 };
View Code
原文地址:https://www.cnblogs.com/cxc1357/p/12596835.html