求交集和并集的线性算法
假设有集合A={1, 7, 5, 13, 9, 10, 11}, B={5, 7, 10, 1, 18, 12},
1)求交集,需要得到结果:A∩B={1, 5, 7,10}
思路如下:
①建立一个哈希表(HashTable),其键(KEY)表示集合中数字的值,其值(VALUE)表示集合中数字出现的次数
②遍历集合A,将集合中的每个数字(KEY)插入哈希表,每个数字的出现次数(VALUE)设置为1
③遍历集合B,对于集合中的每个数字:
如果哈希表中已经存在该数字,将对应的VALUE改为2
如果哈希表中不存在该数字,忽略
④遍历哈希表,输出VALUE为2的数字,即得到A和B的交集
2) 求并集,需要得到结果:AUB={1,5,7,9,10,11,12,13,18}
思路如下:
①建立一个哈希表(HashTable),其键(KEY)表示集合中数字的值,其值(VALUE)可以无视
②遍历集合A,将集合中的每个数字(KEY)插入哈希表
③遍历集合B,对于集合中的每个数字:
如果哈希表中已经存在该数字,忽略
如果哈希表中不存在该数字,将这个数字插入哈希表
④遍历哈希表,输出哈希表中的每个KEY,即为A和B的并集
上面以两个集合为例说明了交集和并集的求法,事实上,上述算法可以很方便的扩展到3个或3个以上的集合
的求交集和求并集。另外求并集时,由于哈希表的值(VALUE)部分不需要用到,所以这个数据结构也可以更换为
哈希集(HashSet)。
Refer to: http://akalius.iteye.com/blog/1211726
转载于:https://www.cnblogs.com/bouygues/p/4479983.html
求交集和并集的线性算法相关推荐
- python中交集并集用什么符号表示_Python实现两个list求交集,并集,差集的方法示例...
本文实例讲述了Python实现两个list求交集,并集,差集的方法.分享给大家供大家参考,具体如下: 在python中,数组可以用list来表示.如果有两个数组,分别要求交集,并集与差集,怎么实现比较 ...
- Linux 两个文件求交集、并集、差集
Linux 两个文件求交集.并集.差集 原文地址: Linux 两个文件求交集.并集.差集 (https://www.cnblogs.com/molong1208/p/5358509.html) 一. ...
- Java:实现集合A、B的交集、并集以及余集算法(附完整源码)
Java:实现集合A.B的交集.并集以及余集算法 import java.util.Scanner; import java.util.TreeSet; public class Main {publ ...
- 对集合进行求交集、并集、差集
对集合的元素进行计算操作 交集:求两集合相同元素 并集:求两集合全部元素(即用addAll()) 差集:求一个集合中剔除另一个集合所剩下的元素.(即用removeAll()) public class ...
- 【分享】Java集合求交集、并集、差集
面试场景: 之前遇到一个长得很有趣的面试官问两个集合怎么求他们的交集.并集.茶集,回答之后觉得非常有意思,在这里记录一下: 概念说明 一.交集 交集:两个集合的公共(相交)部分,如下图: 代码案例: ...
- ES6 使用数据类型Set求交集、并集、差集
前言 ES6新增了数据类型Set,它是一种类似数组的数据结构.但它和数组的不同之处在于它的成员都是唯一的,也就是说可以用来去除数组重复成员. Set本身是一个构造函数用来生成Set数据结构. cons ...
- Java求交集、并集、差集
public static void main(String[] args) {Set<Integer> set1 = new HashSet<>();Set<Integ ...
- javascript 数组求交集/差集/并集/过滤重复
最近在小一个小程序项目,突然发现 javscript 对数组支持不是很好,连这些基本的功能,都还要自己封装.网上查了下,再结合自己的想法,封装了一下,代码如下. //数组交集 Array.protot ...
- python 对中文文件求交集、并集、差集
核心内容: 1. set模块 intersection() ,union(), difference() 函数的使用 2. 文件格式:一行一词, uft-8 3. 解决中文以str读入后转成list ...
- SQL语句求交集、并集、差集
1.A.B的交集: select * from A inner jion B on A.col = B.col 2.A.B 的对称 的差集: select * from A full outer jo ...
最新文章
- BaseTDI.sys 瑞星卡巴冲突,导致机器蓝屏
- python django 动态网页_使用Django创建动态页面
- Understanding HBase and BigTable 译文
- Oracle 简单树查询
- buu [BJDCTF 2nd]cat_flag
- 记录一个解决了一个下午加一个晚上的问题,关于springMVC上传文件的功能
- CALL SYMPUT与CALL SYMPUTX区别
- 路由器有一个android设备连接不上,Android http连接 – 多个设备无法连接同一台服务器...
- 【多题合集】KMP练习
- 2021级C语言大作业 - 消灭星星
- 15. JavaScript Array(数组)对象
- 杭州师范大学仓前校区宽带认证客户端电信用户拨号宽带链接路由器
- 如何隐藏C/C++编译生成的函数符号
- 苹果大中华区营收同比增48% iPhone销量翻番
- 2021毛概知识点章节整理(完整版)
- Web网页尺寸(1)
- 比较经典的位字段例题(颜色三原色)
- 频繁更新背后,微信究竟在思考什么?
- android 小米时钟的实现
- 网络会议蓬勃发展:COVID-19对视频通话市场的影响