11-02 两个数组的交集

原题
在这里插入图片描述
思路:

如果这个题给出的不是变长数组,可以使用哈希数组进行判定,但是给出的变长数组,在使用其最大长度定义数组的时候会报错,因为可能是0;
因此,这个题使用UNordered_set数组进行操作,set数组能够自动去重。这样,我们首先建立两个set数组h, h1,在遍历第一个数组num1的时候,将数组中的元素压入到set数组h中去,之后遍历第二个num2数组,如果num2中的元素出现在h1中,则判断这个元素是否已经被压入到h2中,如果在h2中没有出现,则将这个元素压入到最终的结果中。
如果没有判断是否在h2中出现,结果不会被去重。

class Solution {
    
    
public:
    vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
    
    
       unordered_set<int> h, h1;
       vector<int> b;
       for(int i=0; i<nums1.size(); i++)
       {
    
    
           h.insert(nums1[i]);
       }
       for(int i=0; i<nums2.size(); i++)
       {
    
    
           if(h.count(nums2[i]) && h1.count(nums2[i]) == 0)
           {
    
    
               h1.insert(nums2[i]);
               b.push_back(nums2[i]);
           }
       }
       return b;
    }
};

猜你喜欢

转载自blog.csdn.net/weixin_45885232/article/details/109462560
今日推荐