349.俩个数组的交集

  • 题目
  • 函数原型
  • 集合 Set
  • 集合 Map



 


题目

题目:https://leetcode-cn.com/problems/intersection-of-two-arrays/

 


函数原型

class Solution {
public:
    vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {

    }
};

 


集合 Set

class Solution {
public:
    vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
        set<int> st;
        vector<int> ans;                      // 记录俩个数组中的共同元素
        for( auto& s:nums1 )                  // Map 记录nums1
            st.insert(s);
        
        for( auto s:nums2 ) {                 // 扫描nums2,如果 Map 出现过
            if( st.count(s) ) {               // 重复出现
                ans.push_back(s);             // 添加
                st.erase(s);                  // 删除 Set 中的这个元素,避免重复
            }
        }
        return ans;
    }
};

 


集合 Map

class Solution {
public:
    vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
        unordered_map<int,int> map;
        vector<int> ans;                      // 记录俩个数组中的共同元素
        for(int i = 0;i<nums1.size();i++)     // Map 记录nums1
            map[nums1[i]] = 1;

        for(int i = 0;i<nums2.size();i++) {   // 扫描nums2,如果 Map 出现过
            if(map[nums2[i]] == 1){           // 重复出现
                map[nums2[i]] = 0;            // 删除 Map 中的这个元素,避免重复
                ans.push_back(nums2[i]);      // 添加
            }
        }
        return ans;
    }
};