C/C++教程

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

本文主要是介绍[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]

这篇关于[LeetCode] 349.两个数组的交集的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!