社区
数据结构与算法
帖子详情
两个整型数组的交集
chin_chen
2009-03-05 12:10:38
如题,删除两个整型数组A和B的交集.
有啥办法没?要求复杂度最优。
...全文
195
5
打赏
收藏
两个整型数组的交集
如题,删除两个整型数组A和B的交集. 有啥办法没?要求复杂度最优。
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
chin_chen
2009-03-05
打赏
举报
回复
[Quote=引用 1 楼 litaoye 的回复:]
如果不考虑空间,用hash可以达到O(A+B)
否则的话,可以先对AB分别排序,然后用归并排序的方法,应该可以达到A*logA + B*logB + O(A+B)
[/Quote]
怎么建hash啊?是建一个数组,把B所有元素按大小放进在数组里面对应的位置,然后对A的元素一个个的找,找到的话就删掉是吧?是这样么?
绿色夹克衫
2009-03-05
打赏
举报
回复
如果不考虑空间,用hash可以达到O(A+B)
否则的话,可以先对AB分别排序,然后用归并排序的方法,应该可以达到A*logA + B*logB + O(A+B)
大王派我去巡山
2009-03-05
打赏
举报
回复
[Quote=引用 2 楼 ppass 的回复:]
我给出一个另类的思路,内存开销可能会大,但速度绝对快.
1. 找出2个数组的最大值nMax.
2. 定义一个桶array,容量为nMax.并全部初始化为0.
3. 遍历一遍数组A,将array[a[i]]的值=1; //不是++,因为A中可能也有重复的.
4. 遍历一遍数组B,将array[b[i]]的值++;
5. 遍历一遍数组array,将>1的值统统删除. //不是=2,因为B中有重复的,值-1,就是重复的次数.
看这个帖子,昨天刚刚讨论过的.
http://topic.csdn.net/u/20090304/…
[/Quote]
这其实就是1L说的Hash的办法
ppass
2009-03-05
打赏
举报
回复
我给出一个另类的思路,内存开销可能会大,但速度绝对快.
1. 找出2个数组的最大值nMax.
2. 定义一个桶array,容量为nMax.并全部初始化为0.
3. 遍历一遍数组A,将array[a[i]]的值=1; //不是++,因为A中可能也有重复的.
4. 遍历一遍数组B,将array[b[i]]的值++;
5. 遍历一遍数组array,将>1的值统统删除. //不是=2,因为B中有重复的,值-1,就是重复的次数.
看这个帖子,昨天刚刚讨论过的.
http://topic.csdn.net/u/20090304/17/10ee708f-6f9a-4100-b5fc-885fa8aca3a7.html
绿色夹克衫
2009-03-05
打赏
举报
回复
就是这样,如果个数还有要求的话,可以加一个计数,比如A里有2个10,B里有5个10,删除后B还需要保留3个10的话
也可以用比较现成的hashtable(C不太熟,也许不叫这个),.net里面叫做Dictionary
[Quote=引用 4 楼 chin_chen 的回复:]
引用 1 楼 litaoye 的回复:
如果不考虑空间,用hash可以达到O(A+B)
否则的话,可以先对AB分别排序,然后用归并排序的方法,应该可以达到A*logA + B*logB + O(A+B)
怎么建hash啊?是建一个数组,把B所有元素按大小放进在数组里面对应的位置,然后对A的元素一个个的找,找到的话就删掉是吧?是这样么?
[/Quote]
两个
有序
整型
数组
的
交集
题目:如何计算
两个
有序
整型
数组
的
交集
? 例如,
两个
含有 n 个元素的有序(非降序)
整型
数组
a 和 b(
数组
a 和 b 中都没有重复元素),求出其共同元素。 int a[ ] = {1, 2, 3, 4, 5}; int b[ ] = {1, 3, 5, 7, 9}; 那么它们的
交集
为{1, 3, 5}。计算
数组
交集
可以采用很多种方法,但
数组
的相对大小一般会影响算法的效率,所以需要根据
两个
计算
两个
有序
整型
数组
的
交集
问题:假设
两个
含有N个元素的有序
整型
数组
a,和b,如何得到他们的
交集
。 方法1,可以用二路归并法。分别从头开始遍历
两个
数组
,比较对应的数值,如果相同就放到一个list中。 package Array; import java.util.*; /** * Created by Administrator on 2017/10/1. */ public class JiaoJi {
如何计算
两个
有序
整型
数组
的
交集
例如
两个
含有n个元素的有序(非降序)
整型
数组
a和b(
数组
a与b中都没有重复元素),求出其共同元素, a = 0, 1, 2, 3, 4 b = 1, 3, 5, 7, 9 那么它们的
交集
为{1, 3}。 计算
数组
交集
可以采用很多种方法,但
数组
的相对大小一般会影响算法的效率,所以需要根据
两个
数组
的相对大小来确定采用的方法: (1)对于
两个
数组
长度相当的情况,一般可以采取如下三种方法。 方
求
两个
有序
整型
数组
的
交集
1. 问题描述 有
两个
有序的
整型
数组
a和b(没有重复元素),他们的长度分别为lenA和lenB,求出他们的共同元素。 例如:a = 0,1,3,5,7,9,11;b = 2,3,4,7,11; 它们的
交集
为{3,7,11}。2. 方法思路 求
交集
的方法有很多种,但
数组
的长度会影响算法的效率。2.1 长度相当时,可采取的算法2.1.1 二路归并 对于
数组
a,b分别以i,j从头遍历
数组
java中
两个
整型
数组
求
交集
_Java中
两个
数组
的
交集
两个
数组
的
交集
导致
两个
数组
中都包含这些元素。如果元素仅在
数组
之一中,则在
交集
中不可用。一个例子如下:Array1=12589Array2=2459Intersection=259给出了一个演示Java中
两个
排序
数组
的
交集
的程序,如下所示。示例publicclassExample{publicstaticvoidmain(Stringargs[]){...
数据结构与算法
33,025
社区成员
35,334
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章