博客
关于我
【leetcode】349. 两个数组的交集(intersection-of-two-arrays)(哈希)[简单]
阅读量:564 次
发布时间:2019-03-10

本文共 1019 字,大约阅读时间需要 3 分钟。

交集函数实现

给定两个数组,编写一个函数来计算它们的交集。以下是实现思路和代码。

思路

  • 问题分析:我们需要找到两个数组中共同存在的元素。
  • 选择数据结构:使用unordered_set来存储元素,利用快速查找和插入的特性提高效率。
  • 算法步骤
    • 遍历第一个数组,将所有元素加入集合中。
    • 遍历第二个数组,检查每个元素是否存在于第一个集合中。
    • 如果元素存在,则将其加入交集集合。
  • 结果处理:将交集集合中的元素按顺序存储到结果数组中。
  • 代码实现

    #include 
    #include
    using namespace std;vector
    intersection(vector
    & nums1, vector
    & nums2) { unordered_set
    unorset_nums1; // 遍历第一个数组,记录所有元素 for (int x : nums1) { if (unorset_nums1.find(x) == unorset_nums1.end()) { unorset_nums1.insert(x); } } unordered_set
    intersection; // 遍历第二个数组,寻找交集 for (int y : nums2) { if (unorset_nums1.find(y) != unorset_nums1.end() && intersection.find(y) == intersection.end()) { intersection.insert(y); } } vector
    ans; for (int z : intersection) { ans.push_back(z); } return ans;}

    时间复杂度

    • 时间复杂度:O(n + m),其中n和m分别是两个数组的长度。
    • 空间复杂度:O(min(n, m)),用于存储交集结果。

    总结

    通过上述方法,我们可以高效地找到两个数组的交集。该算法利用了集合的快速查找特性,确保了时间复杂度的优化。

    转载地址:http://kgbvz.baihongyu.com/

    你可能感兴趣的文章
    亚马逊aws文档语法错误
    查看>>
    什么是5G?居然有人用漫画把它讲得如此接地气!
    查看>>
    Spring cloud --分布式配置中心组件Spring Cloud Config
    查看>>
    UE4接入Android第三方库2——通过JIN与GameActivity通信
    查看>>
    Unity Job System 2——并行处理数据
    查看>>
    BIG解决保险欺诈问题,开创数字化保险时代
    查看>>
    spark概述
    查看>>
    JavaScript 知识梳理[一] 变量类型,浅拷贝,深拷贝
    查看>>
    pip命令 failed to create process.
    查看>>
    做SMTP客户端遇报错:535 Error
    查看>>
    Python3的修改
    查看>>
    SQL基础学习(六)- MySQL的insert语句
    查看>>
    设计模式--单一职责原则的个人理解
    查看>>
    java.security.InvalidKeyException: Illegal key size
    查看>>
    Linux kernel pwn --- CSAW2015 StringIPC
    查看>>
    2020 05 02 记录思考
    查看>>
    2020-05-31 py执行时超时控制
    查看>>
    一段强大的shellcode
    查看>>
    双链表相加问题
    查看>>
    高兴的小明
    查看>>