免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12345下一页
最近访问板块 发新帖
查看: 13352 | 回复: 49
打印 上一主题 下一主题

[算法] 请教一道面试题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-10-09 09:53 |只看该作者 |倒序浏览
有两个单链表A,B  节点的值是无序的,在链表A中的一个节点的值和链表B中的一个节点的值是相等的,求出这个值。我回答用hash做,结果面试管不满意,请问还有什么好方法啊

论坛徽章:
0
2 [报告]
发表于 2008-10-09 09:57 |只看该作者
不是直接遍历吗?

论坛徽章:
0
3 [报告]
发表于 2008-10-09 10:00 |只看该作者
串连、排序、遍历

论坛徽章:
0
4 [报告]
发表于 2008-10-09 10:14 |只看该作者
先排序,再查找。。。。

论坛徽章:
0
5 [报告]
发表于 2008-10-09 11:26 |只看该作者
3L想法不错

论坛徽章:
0
6 [报告]
发表于 2008-10-09 11:30 |只看该作者
串连的想法很好

论坛徽章:
0
7 [报告]
发表于 2008-10-09 12:51 |只看该作者

回复 #3 雨过白鹭洲 的帖子

这个法子不比hash强阿

论坛徽章:
0
8 [报告]
发表于 2008-10-09 13:33 |只看该作者
hash在比较长链的时候实现起来不太容易吧~

论坛徽章:
9
摩羯座
日期:2013-08-15 15:18:48狮子座
日期:2013-09-12 18:07:47金牛座
日期:2013-09-16 13:23:09辰龙
日期:2013-10-09 09:03:27白羊座
日期:2013-10-17 13:32:44子鼠
日期:2014-04-23 15:09:38戌狗
日期:2014-09-17 11:37:542015年亚洲杯之韩国
日期:2015-03-26 10:16:442015亚冠之武里南联
日期:2015-08-18 14:55:52
9 [报告]
发表于 2008-10-09 13:43 |只看该作者
假设A链表有m个元素,B链表有n个元素。
如果是最傻的直接遍历,那算法复杂度是O(m*n)。
先不管是什么算法,由于无序性,最快的应该是O(m+n)。
不过无论如何,似乎都需要用到排序,那么算法复杂度应该是O((m+n)*排序)
对于这种未知类型,似乎线性排序似乎用不了,排一次序估计也只是对数阶的。
目前只想到用std::set的二叉树做一个堆排序,方法就是交替着把两个链表的元素往set里面扔,哪次返回失败,那这个元素就是重复的。
算法复杂度在O(m+n)到O((m+n)(1+log2+log3+……+log(m+n))之间,比较靠RP。

论坛徽章:
0
10 [报告]
发表于 2008-10-09 14:01 |只看该作者
可以这样做:
将listA接点中的值依次减去一个数num(num可任意,比如可以选择为表首接点的值,但不要是0),将结果放在一个数组array中
将listB接点中的值依次减去那个数num,将结果与array中的元素进行比队,找到就OK了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP