LeetCode求两个数组的交集

题目描述

在这里插入图片描述

set集合

class Solution {
    
    
public:
    vector<int> intersection(vector<int>& nums1, vector<int>& nums2){
    
    
        set<int> s(nums1.begin(), nums1.end());
        vector<int> res;
        for(int num : nums2){
    
    
            if(s.erase(num)){
    
    //删除成功返回1,失败返回0
                res.push_back(num);
            }
        }
        return res;
    }
};

在这里插入图片描述

排序 + 双指针

class Solution {
    
    
public:
    vector<int> intersection(vector<int>& nums1, vector<int>& nums2){
    
    
        sort(nums1.begin(), nums1.end());
        sort(nums2.begin(), nums2.end());
        int i = 0;
        int j = 0;
        set<int> s;
        while(i < nums1.size() && j < nums2.size()){
    
    
            if(nums1[i] == nums2[j]){
    
    
                s.insert(nums1[i]);
                i++;
                j++;
            }else if(nums1[i] > nums2[j]){
    
    
                j++;
            }else{
    
    
                i++;
            }
        }
        vector<int> res(s.begin(), s.end());
        return res;
    }
};

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_42500831/article/details/105803683