349. Intersection of Two Arrays

这里给出两种方法

方法一:用无序关联容器map,用map可以进行很多操作,但是这个题里面用map看起来稍微麻烦一点点。

 1 static int wing=[]()
 2 {
 3     std::ios::sync_with_stdio(false);
 4     cin.tie(NULL);
 5     return 0;
 6 }();
 7 
 8 class Solution 
 9 {
10 public:
11     vector<int> intersection(vector<int>& nums1, vector<int>& nums2) 
12     {
13         vector<int> res;
14         if(nums1.size()==0||nums2.size()==0)
15             return res;
16         unordered_map<int,int> i_to_i;
17         for(int i:nums1)
18             i_to_i[i]=1;
19         
20         for(int i:nums2)
21         {
22             if(i_to_i[i]==0)   
23                 continue;
24             i_to_i[i]++;
25             if(i_to_i[i]==2)
26                 res.push_back(i);
27         }
28         vector<int> &k=res;
29         return k;
30     }
31 };

方法二:用set,这种关联容器可进行的操作和运算较少,但是用在这里恰到好处

 1 class Solution 
 2 {
 3 public:
 4     vector<int> intersection(vector<int>& nums1, vector<int>& nums2)
 5     {
 6         unordered_set<int> s(nums1.begin(), nums1.end());
 7         vector<int> res;
 8         for (auto num : nums2) 
 9         {
10             if (s.find(num) != s.end()) 
11             {
12                 res.push_back(num);
13                 s.erase(num);
14             }
15         }
16         return res;
17      }
18 };   

猜你喜欢

转载自www.cnblogs.com/zhuangbijingdeboke/p/9093060.html