社区
数据结构与算法
帖子详情
笔试被人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的长度)
...全文
947
30
打赏
收藏
笔试被人BS了,请算法高手还解决链表的交集问题.
各位兄弟,请为小弟弟看看,被人BS了,心里很难受.也想学习一下: 现有三个单链表A,B和C,其数据都是按从小到大的顺序(数据可能有相同的)来存储的,现要求对它们进行操作,现实A的链表内容为A,B和C的交集(公共部分,没有重复的记录)。同时对A中的其他结点进行释放内容(要求算法的复杂度为O(m+n+p)其中m,n,p分别为A,B,C的长度)
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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)
九月十月百度人搜,阿里巴巴,腾讯华为
笔试
面试八十题(第331-410题)
九月十月百度人搜,阿里巴巴,腾讯华为小米搜狗
笔试
面试八十题 (参与
算法
&面试题交流与讨论,
请
加群:30382647) 引言 自发表上一篇文章至今(事实上,上篇文章更新了近3个月之久),blog已经停了3个多月,而在那之前,自开博以来的21个月每月都不曾断过。正如上一篇文章支持向量机通俗导论(理解SVM的三层...
软件工程师
笔试
题目(C++)
转自:http://www.blogjava.net/huyi2006/articles/191083.html点击打开链接 发布之前先申明两点: 1 所有资料来自网络(主要是CSDN),本人只是收集和转发。 2 所有
问题
解答(尤其是代码)只是参考,不保证正确。 先发基本
问题
,再发编程
问题
.......... 4. static有什么用途?(
请
至少说明两种) 1.
C++
笔试
题目大全
1 c++ c++ c++ c++
笔试
题汇总 ①
链表
反转 单向
链表
的反转是一个经常被问到的一个面试题,也是一个非常基础的
问题
。比如一个
链表
是 这 样的: 1->2->3->4->5 通过反转后成为 5->4->3->2->1 。 最容易想到的方法遍历一遍
链表
,利用一个辅助指针,存储遍历过程中当前指针指向的下一个 元 素,然后将当前节点元素的指针反转后,利用已经存储的指针往后面继续遍
C/C++
笔试
题
1.进程和线程的差别。 线程是指进程内的一个执行单元,也是进程内的可调度实体. 与进程的区别: (1)调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位 (2)并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行 (3)拥有资源:进程是拥有资源的独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源. (4)系统开销:在创建或撤消进程时,由于系
java面试
笔试
题整理
笔试
题常见考点: 1. 面向对象 OOADP 2. 多线程 3. 集合框架 4. 异常 5. String 6.
算法
和数据结构 7. 原理/机制:JVM垃圾回收 类加载机制 为什么设计异常机制 JAVA里的泛型 1.5新增语法 5、String是最基本的数据类型吗? 基本数据类型包括byte、int、char、long、float、dou...
数据结构与算法
33,027
社区成员
35,336
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章