[LeetCode] 349.两个数组的交集

LeetCode349. 两个数组的交集


思路
利用哈希数据结构:unordered_set,其特点在于:

  • 1.不再以键值对的形式存储数据,而是直接存储数据的值(对于 unordered_set 容器不以键值对的形式存储数据,也可以这样认为,即 unordered_set 存储的都是键和值相等的键值对,为了节省存储空间,该类容器在实际存储时选择只存储每个键值对的值)
  • 2.容器内部存储的各个元素的值都互不相等,且不能被修改
  • 3.不会对内部存储的数据进行排序

对于本题只需要将其中一个数组遍历存入unordered_set 容器中,然后通过循环遍历另一个数组中的每个元素,并在unordered_set 容器中查找(find()函数)该元素是否存在,若存在,则在返回值中插入该元素,若不存在,则继续遍历。

代码

class Solution {
public:
    vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
        unordered_set<int>res;
        unordered_set<int>tmp1(nums1.begin(), nums1.end());

        for(int tmp2 : nums2){
            if(tmp1.find(tmp2) != tmp1.end()){
                res.insert(tmp2);
            }
        }

        return vector<int>(res.begin(), res.end());
    }
};

相关题目

[350. 两个数组的交集 II]

上一篇:双向广搜


下一篇:c++ map与unordered_map区别及使用