社区
数据结构与算法
帖子详情
笔试被人BS了,请算法高手还解决链表的交集问题.
wcqgm
2008-10-25 12:13:37
各位兄弟,请为小弟弟看看,被人BS了,心里很难受.也想学习一下:
现有三个单链表A,B和C,其数据都是按从小到大的顺序(数据可能有相同的)来存储的,现要求对它们进行操作,现实A的链表内容为A,B和C的交集(公共部分,没有重复的记录)。同时对A中的其他结点进行释放内容(要求算法的复杂度为O(m+n+p)其中m,n,p分别为A,B,C的长度)
...全文
1085
30
打赏
收藏
笔试被人BS了,请算法高手还解决链表的交集问题.
各位兄弟,请为小弟弟看看,被人BS了,心里很难受.也想学习一下: 现有三个单链表A,B和C,其数据都是按从小到大的顺序(数据可能有相同的)来存储的,现要求对它们进行操作,现实A的链表内容为A,B和C的交集(公共部分,没有重复的记录)。同时对A中的其他结点进行释放内容(要求算法的复杂度为O(m+n+p)其中m,n,p分别为A,B,C的长度)
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
30 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lemonrong
2008-11-05
打赏
举报
回复
分析的很清楚,学习了!
ws023
2008-11-03
打赏
举报
回复
归并排序问题~
winingsky
2008-10-31
打赏
举报
回复
用三个指针分别指向三个链表,用一个循环开始啊
tingsky
2008-10-31
打赏
举报
回复
如果以最短链表开始,折半,或者跳跃(步进n)的方式
fengcman
2008-10-31
打赏
举报
回复
这题不难,上面有解了,不再叙述 。 这中东西在普通考研书中应该都有描述
hertz2007
2008-10-30
打赏
举报
回复
确实不需要那么麻烦你。LCS算法针对的是未排序序列。而此题各组序列已排序,因此直接比较就可以了。
catmonkeyxu
2008-10-30
打赏
举报
回复
ls的大哥,这题不用那么麻烦吧
hertz2007
2008-10-30
打赏
举报
回复
最大公共子序列问题,用动态规划方法做。
sxxiaozi
2008-10-30
打赏
举报
回复
参考下set_intersection()函数,根据他的代码思想自己写个实现3个链表交(可以在A上操作)的函数,至于释放空间的话,可以等交完了链表后面的全部释放就可以了
ayu_J
2008-10-27
打赏
举报
回复
算法() //伪代码
{
设置三个指针分别指向三个链表第一个元素;
while(三个元素的指针都不为空)
if(A链表指针指向的元素==B链表指针指向的元素==链表指针指向的元素)
{
A表指针向后移一个;
B、C表把第一个元素释放同时指针都向后移一个;
}
else A、B、C表指针指向的元素都释放并指针都向后移一个;
if(A表指针不为空)A表指针后面的所有元素逐个释放;
if(B表指针不为空)B表指针后面的所有元素逐个释放;
if(C表指针不为空)B表指针后面的所有元素逐个释放;
}
youxia000
2008-10-27
打赏
举报
回复
看来没啥问题了
wzyzb
2008-10-27
打赏
举报
回复
mark jf
wcqgm
2008-10-27
打赏
举报
回复
谢谢各位兄弟,小弟受教了.
绿色夹克衫
2008-10-27
打赏
举报
回复
1
大家给的方法都不错(除了我开头弄成了并集的那个),基本上都是O(m+n+p),也就差写出具体代码了!
我大概写个程序构架吧,lz自己改一改应该就差不多了,也是O(m+n+p)的(用以弥补我开头弄成了并集,误导lz的错误)
while(3个指针都未走到最后)
{
while(p2->data < p1->data)
{
p2 = p2->NextNode;
}
while(p3->data < p1->data)
{
p3 = p3->NextNode;
}
while(p1->data < p2->data 或者 p1->data < p3->data)
{
temp = p1->NextNode;
delete(p1);
p1 = temp;
}
if(p1->data == p2->data == p3->data)
{
p1 = p1->NextNode;
p2 = p2->NextNode;
p3 = p3->NextNode;
}
lastp1 = p1;
while(p1->data == lastp1->data)
{
temp = p1->NextNode;
delete(p1);
p1 = temp;
}
lastp1->NextNode = p1;
}
最后:删除包括p1在内的A后面的所有元素
(希望这次没有啥疏漏)
wuyi8808
2008-10-26
打赏
举报
回复
up
dengqianyi2008
2008-10-26
打赏
举报
回复
iii) 若 pa->data > pc->data, pb++,pc++;转2);
我喜欢这样写:pa->data == pc->data, pb++,pc++,pa++;转2);
不知道行不行
dengqianyi2008
2008-10-26
打赏
举报
回复
好好想下尾巴的算法,差不多就能编写出来了吧?
xuboamei
2008-10-25
打赏
举报
回复
对三个一链表进行一遍遍历,就可以找出来啊,很简单啊
voiceofwind
2008-10-25
打赏
举报
回复
[Quote=引用 4 楼 tailzhou 的回复:]
ls错看成是求并集了;
1) 指针pa,pb,pc分别指向a,b,c的第一个节点;
2) 比较pb->data与pc->data;
a)若pb==NULL or pc==NULL,删除pa指向的节点,以及之后的所有节点,结束;
b)若pb->data > pc->data,pc++,继续2);
c)若pb->data < pc->data,pb++,继续2);
d)若pb->data == pc->data 转 3);
3) 比较 pa->data 与 pc->data;
i) 若 pa==NULL,结束;
ii) 若 pa->data < pc->data, 删除pa指向的节点,…
[/Quote]
学习了,很强啊
wcqgm
2008-10-25
打赏
举报
回复
楼上能否给些源代码或伪代码?谢谢
加载更多回复(10)
C++进阶(05):哈希
本文系统讲解C++ unordered_map/unordered_set的底层实现原理,涵盖闭散列与开散列两种哈希冲突
解决
策略,重点分析负载因子、伪删除、扩容机制及哈希桶模拟实现;深入剖析位图与布隆过滤器的设计原理与代码实现,并结合海量数据处理场景(如哈希切割、TopK统计、
交集
判别)展示哈希技术的实际应用。
政府科技管理者在推动区域产业数字化转型过程中,如何利用科创数智大脑进行精准政策匹配?.docx
科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化
解决
方案,推动科技创新与产业创新智能化发展。
使用java文件分卷压缩
Java环境配置实战指南
易语言源码拦截外部程序消息
易语言源码拦截外部程序消息
数据结构与算法
33,025
社区成员
35,336
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章