#include <unordered_map>
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param nums1 int整型vector 
     * @param nums2 int整型vector 
     * @return int整型vector
     */
    vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
        //思路1:利用哈希表去重,因为公共元素不包括重复的
        //然后利用哈希表的查询功能,如果nums1的元素在nums2的哈希表中存在,说明是公共元素,加入到数组中即可
        //思路2: 先对数组排序然后利用双指针,如果不相等就一个指针移动
        //如果相等就两个指针一起移动,最后对数组去重即可
        unordered_map<int,int> hash1;
        unordered_map<int,int> hash2;
        vector<int> v;
        for(auto& n:nums1)
            hash1[n];
        for(auto& n:nums2)
            hash2[n];
        for(auto& kv:hash1)
        {
            if(hash2.count(kv.first))
            {
                v.push_back(kv.first);
            }
        }
        return v;
    }
};

解题思路:

//思路1:利用哈希表去重,因为公共元素不包括重复的

//然后利用哈希表的查询功能,如果nums1的元素在nums2的哈希表中存在,说明是公共元素,加入到数组中即可

//思路2: 先对数组排序然后利用双指针,如果不相等就一个指针移动

//如果相等就两个指针一起移动,最后对数组去重即可