社区
数据结构与算法
帖子详情
两个整型数组的交集
chin_chen
2009-03-05 12:10:38
如题,删除两个整型数组A和B的交集.
有啥办法没?要求复杂度最优。
...全文
172
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]
运算符重载题目合集(
整型
数组
交集
、矩阵加法、分数加法)
- 题目要求创建一个名为`Set`的类,通过重载运算符`*`来实现
两个
集合的
交集
。`Set`类的私有数据成员包括一个`elems`
数组
存储集合元素和一个`lens`变量记录元素个数。`Set`类提供了构造函数、`Inset`函数(检查元素...
两个
数组
交集
(双指针)1
然后定义
两个
整型
变量`p1`和`p2`作为双指针,分别初始化为
两个
排序后
数组
的起始位置。 在`while`循环中,我们检查`p1`和`p2`是否都小于它们各自
数组
的长度,以防止越界。循环内部,我们进行以下操作: 1. 比较`...
义一个整数集合类integerSet。这种类型的对象可以存储10个20~80之间的整数,即他的内部有一个
整型
数组
存储数据。编程:
1. 初始化
两个
整型
数组
`a`和`b`,分别用于创建
两个
`integerSet`对象。 2. 创建`integerSet`对象`d`,并调用`bool`、`jiao`、`bing`和`delete`方法,实现集合的比较、
交集
、并集以及删除操作。 通过以上分析可以看出...
c语言基础-c语言编程基础之
数组
操作示例-
两个
数组
的
交集
.zip
假设我们有
两个
整型
数组
`arr1`和`arr2`,下面是一种可能的解决方案: 1. 首先,对
数组
进行排序。C语言没有内置的排序函数,但可以使用快速排序、冒泡排序或插入排序等算法。这里以快速排序为例: ```c void ...
关于
数组
的几道面试题1
给定一个
整型
数组
,要求使用递归法在一行代码内计算所有元素的和。这个问题可以通过递归解决,每次递归调用将
数组
最后一个元素加到前面元素的和上,直到
数组
为空。 ```cpp int sum(int*a, int n) { return n ==...
数据结构与算法
33,029
社区成员
35,337
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章