专栏首页刷题笔记【LeetCode】 两个数组的交集

【LeetCode】 两个数组的交集

给定两个数组,编写一个函数来计算它们的交集。

示例 1:

输入: nums1 = [1,2,2,1], nums2 = [2,2]
输出: [2]

示例 2:

输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出: [9,4]

说明:

  • 输出结果中的每个元素一定是唯一的。
  • 我们可以不考虑输出结果的顺序。

按照刚才学习的哈希表直接写的

class Solution {
public:
    vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
        vector<int> num;
        unordered_set<int> s1;
        unordered_set<int> s2;
        for(auto it = nums1.begin();it != nums1.end(); it++){
            s1.insert(*it);
        }
        for(auto it = nums2.begin();it != nums2.end(); it++){
            if(s1.count(*it)>0){
                s2.insert(*it);
            }
        }
        for(auto it = s2.begin(); it != s2.end(); it++){
            num.push_back(*it);
        }
        return num;
    }
};

看了其他大佬答案,发现可以直接把nums1的存进去。。。

然后 第二点 是 存完,把源 set里面的数 erase掉 就不用考虑重复问题了

class Solution {
public:
    vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
        unordered_set<int> s(nums1.begin(), nums1.end());
        vector<int> ans;
        for (auto i : nums2){
            if (s.count(i)){
                ans.push_back(i);
                s.erase(i);
            }
        }
        return ans;
    }
};

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【LeetCode】88. 合并两个有序数组 双指针

    给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。

    韩旭051
  • 【LeetCode】4. Median of Two Sorted Arrays

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    韩旭051
  • 【LeetCode】 设计哈希映射

    put(key, value):向哈希映射中插入(键,值)的数值对。如果键对应的值已经存在,更新这个值。 get(key):返回给定的键所对应的值,如果映射中...

    韩旭051
  • 547. 两数组的交

    样例 nums1 = [1, 2, 2, 1], nums2 = [2, 2], 返回 [2].要求去重,这样还是稍微有点难度。

    和蔼的zhxing
  • Array - 88. Merge Sorted Array

    Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one s...

    用户5705150
  • C++打怪 之 vector

    在C语言编程中,涉及到声明一个全局数组的时候,经常会遇到一种情况,数组的大小设定多少合适。一般情况下我们会设定一个比较大的值,例如1000甚至更大,主要就是怕在...

    开源519
  • C++之旅-vector

    标准库类型vector表示对象集合,并且所有的对象类型相同。由于它常常“容纳”其他对象,因此常称作容器。vector也是一个类模板。编译器根据模板创建类型或函数...

    编程珠玑
  • 【LeetCode】88. 合并两个有序数组 双指针

    给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。

    韩旭051
  • [WPF]为什么使用SaveFileDialog创建文件需要删除权限?

    好像很少人会遇到这种需求。假设有一个文件夹,用户有几乎所有权限,但没有删除的权限,如下图所示:

    dino.c
  • STL vector list deque区别与实现

        向量 相当于一个数组     在内存中分配一块连续的内存空间进行存储。支持不指定vector大小的存储。STL内部实现时,首先分配一个非常大的内存空间预...

    阳光岛主

扫码关注云+社区

领取腾讯云代金券