博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
怎样对数组进行交集与并集运算
阅读量:2401 次
发布时间:2019-05-10

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

以下不代表最优解,只是在学习中突然想到要怎么对数组进行交集与并集的运算

所以在自己尝试写了一遍后记录下来。

数组的并集

给定两个数组:

int[] a = {1, 2, 3, 4, 5};
int[] b = {2, 3, 5, 6, 7};
输出:
1,2,3,4,5,6,7

我的思路:

两个数组的交集第一时间想到的肯定是最简单的两两比较,如果相等就加进新数组,但是这样做会造成时间的大量浪费,如果两个长度各1W的数组,比较完的时间….不可想象。
然后马上就想到Java的HashSet,重复不添加,所以把所有的数组遍历进Set,再遍历Set岂不是就完成了。
于是很容易实现了我的代码:

int[] a = {
1, 2, 3, 4, 5}; int[] b = {
2, 3, 5, 6, 7}; HashSet
hashSet = new HashSet<>(); for (int aNum : a) { hashSet.add(aNum); } for (int bNum : b) { hashSet.add(bNum); } Iterator
iterator = hashSet.iterator(); while(iterator.hasNext()){ System.out.print(iterator.next()+" "); }

数组的交集

给定两个数组:

int[] a = {1, 2, 3, 4, 5};
int[] b = {2, 3, 5, 6, 7};
输出:
3,4,5

我的思路:与之前相同,强行跑遍历的算法肯定是不可取的,又想到了之前在一堆有重复数的数组中找出唯一一个没有重复的算法:

一是看到的最优解对自身进行^运算。
二是自己思考出的通过HashMap对每个数进行个数统计,如果为1则得出。

同理得出此处交集的运算规则,统计每一个数的出现次数,如果为2,则是交集。

以下为代码实现:

int[] a = {
1, 2, 3, 4, 5}; int[] b = {
2, 3, 5, 6, 7}; HashMap
hashMap = new HashMap(16); for (int i = 0; i < a.length; i++) { if (hashMap.get(a[i]) != null) { hashMap.put(a[i], hashMap.get(a[i]) + 1); } else { hashMap.put(a[i], 1); } } for (int i = 0; i < b.length; i++) { if (hashMap.get(b[i]) != null) { hashMap.put(b[i], hashMap.get(b[i]) + 1); } else { hashMap.put(b[i], 1); } } for (int i : hashMap.keySet()) { if (hashMap.get(i).equals(2)) { System.out.print(i+" "); } } }

如有更优解或解题思路出错,感谢指出!

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

你可能感兴趣的文章
alert日志中的一条ora警告信息的分析
查看>>
美国旧金山之行第四天
查看>>
zookeeper初探
查看>>
mysqldump与innobackupex备份过程你知多少(完结篇)
查看>>
sysbench花式踩坑之三:自增值导致的锁等待
查看>>
当心!使用mysqldump备份可能会让你欲哭无泪
查看>>
oracle 12c flex cluster专题 之 节点角色转换
查看>>
SQL优化案例-改变那些CBO无能为力的执行计划(一)
查看>>
SQL优化案例-正确的使用索引(二)
查看>>
Oracle Data Guard Feature 12cR2系列(一)
查看>>
MySQL InnoDB Update和Crash Recovery流程
查看>>
Oracle RushQL勒索病毒恢复方法
查看>>
Oracle RAC Cache Fusion 系列十:Oracle RAC Enqueues And Lock Part 1
查看>>
MySQL问题两则
查看>>
MySQL执行计划explain的key_len解析
查看>>
基于Oracle的私有云架构探析(连载一)
查看>>
ASM 翻译系列第十弹:ASM Internal ASM DISK header
查看>>
ASM 翻译系列第一弹:基础知识 ASM AU,Extents,Mirroring 和 Failgroups
查看>>
MySQL排序内部原理探秘
查看>>
ASM 翻译系列第八弹:ASM Internal ASM file extent map
查看>>