当前位置: 首页 > news >正文

数据结构和算法—如何快速求组两个数组的交集

如何快速求两个数组的交集?

现有数组A、B ,数组长度分别为M、N,并且都是未排序的,如何快速两个数组的交集


说明:对于求数据交集的问题,那么每一个数组中可能会有重复元素,但是重复元素对求交集其实没有太大意义。

思路一:

              采用一个set 去存储一个数组,假定为A,然后用再从set中逐个查找B的元素。查到了就放入交集数组。

              当然采用哈希(hash_set)的的方式也能达到同样的效果。

              说明: 在STL中,set是以红黑树(RB-tree)作为底层数据结构,在时间复杂度为O(logN)情况下插入、删除和查找数据,hash_set操作的时间复杂度则比较复杂,这                 取决于哈希函数和哈希表的负载情况。一般来说,查询的数据量越大,hash_set的性能优势越明显。

              时间复杂度:O(Mlog(n))

             空间复杂度:o(min(M,N))


思路二:

             去长度小的数组A排序,对大数组B,直接用二分查找。

             时间复杂度:O(mlog(n))

              

思路三:(受限方法)

            如果知道元素上限为MaxElem,那么可以用bitset,对两个数组建立两个bitset,然后将两个bitset求与,得到的就是两个数组的交集。

            时间复杂度为O(m+n),空间复杂度为(MaxElem/8)。

            缺点:很明显,如果A只有两个元素(1,INT_MAX)那么这个方法就太糟糕了。

        

相关文章:

  • 利用jquery load 局部刷新数据
  • linux 下 ethtool 修改网卡eeprom
  • 五脏排毒最简单有效的方法
  • 用Jquery给Table 的TD TR绑定事件
  • Linux 内核中双向链表及list.h 文件分析
  • 提升ArcGIS Server for Java的REST访问切片图效率
  • 转转带你玩转企业虚拟化
  • 数据结构与算法[LeetCode]—3Sum 求数组中和为0 的三个数的组合
  • 摩尔庄园为啥这么火?
  • [LeetCode]—Rotate Image 矩阵90度翻转
  • “国家使命”图书第一批权威发布
  • Windows 7 ship party
  • LeetCode]—Rotate List 循环右移链表
  • 推荐阅读:太极拳的奥妙-专访七十肖维佳老翁现场展示
  • 一个真实的项目经历,很多东西大家可以借鉴下
  • 《Java编程思想》读书笔记-对象导论
  • 「前端早读君006」移动开发必备:那些玩转H5的小技巧
  • CentOS 7 防火墙操作
  • Docker容器管理
  • go append函数以及写入
  • Golang-长连接-状态推送
  • Java 最常见的 200+ 面试题:面试必备
  • JavaScript异步流程控制的前世今生
  • Java多态
  • miaov-React 最佳入门
  • python学习笔记 - ThreadLocal
  • STAR法则
  • yii2中session跨域名的问题
  • 彻底搞懂浏览器Event-loop
  • 关于 Linux 进程的 UID、EUID、GID 和 EGID
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • 极限编程 (Extreme Programming) - 发布计划 (Release Planning)
  • 面试遇到的一些题
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 深入 Nginx 之配置篇
  • 适配mpvue平台的的微信小程序日历组件mpvue-calendar
  • 数据科学 第 3 章 11 字符串处理
  • 小程序测试方案初探
  • 优秀架构师必须掌握的架构思维
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • (iPhone/iPad开发)在UIWebView中自定义菜单栏
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (七)理解angular中的module和injector,即依赖注入
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • ..回顾17,展望18
  • .net core 6 集成 elasticsearch 并 使用分词器
  • .net2005怎么读string形的xml,不是xml文件。
  • .NET国产化改造探索(一)、VMware安装银河麒麟
  • .NET开发人员必知的八个网站
  • .NET文档生成工具ADB使用图文教程
  • @ 代码随想录算法训练营第8周(C语言)|Day57(动态规划)
  • [ Linux ] Linux信号概述 信号的产生
  • []我的函数库