社区
C语言
帖子详情
出一道面试时遇到的算法题
popo00fa
2011-08-15 11:54:25
题目:
如何判断一个单链表是否有环。即最后一个节点的next指针没有指向NULL,而是指向了前面的某一个节点。
要求:尽量考虑空间/时间复杂度
...全文
220
14
打赏
收藏
出一道面试时遇到的算法题
题目: 如何判断一个单链表是否有环。即最后一个节点的next指针没有指向NULL,而是指向了前面的某一个节点。 要求:尽量考虑空间/时间复杂度
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
AnYidan
2011-08-17
打赏
举报
回复
[Quote=引用 9 楼 l369294289 的回复:]
引用 7 楼 dongguan131 的回复:
6楼头像是谁?告诉我吧。。。
刘涛
[/Quote]
燕姿
icemornings
2011-08-16
打赏
举报
回复
这题怎么感觉那么熟悉……好像做过……
---------------
1、类似1楼的方法。
2、定义两个指针,fast和slow,fast每次走2步,slow每次走1步, 如果有环,那么最终fast和slow会相遇
(可以想象两个人以不同的速度在一个环形跑道上,快的人最终会再追上慢的人)
3、逆转链表,遍历链表并把每个节点的方向逆转(Header指向NULL,下一个节点指向Header……),如果有环的话,新的链表的New_Header肯定和原来的Header相同,(相当于绕了个圈走回来了)
-------------
我的第一想法和1楼的一样……
l369294289
2011-08-16
打赏
举报
回复
菜鸟路过~~~~~
每个节点里面设置一个标志量,遍历了的就是1,没遍历就是0,如果一直遍历下去遇到了已经遍历的,就有环。
popo00fa
2011-08-16
打赏
举报
回复
不错,果然有高手。。
我当时只想到了逆转链表的算法,不过面试官说,你这样做就把一个链表的顺序改变了,但如果再逆转回来会浪费时间,所以面试官给出了“步长法”
shi3590
2011-08-16
打赏
举报
回复
恩。老题了。步长法是可以判断,如果要返回节点,可以用扫描法,只要判断next节点有没有在前面出现过即可。不过从复杂度考虑,只有步长法了。
liangyonglou
2011-08-16
打赏
举报
回复
这是个老题了
morebread
2011-08-16
打赏
举报
回复
[Quote=引用 5 楼 zsc_ericluo 的回复:]
引用 2 楼 icemornings 的回复:
这题怎么感觉那么熟悉……好像做过……
---------------
1、类似1楼的方法。
2、定义两个指针,fast和slow,fast每次走2步,slow每次走1步, 如果有环,那么最终fast和slow会相遇
(可以想象两个人以不同的速度在一个环形跑道上,快的人最终会再追上慢的人)
3、逆转链表,遍历链表并把每个节点的方向逆转(H……
[/Quote]
第一个效率不错,不过可能要改变节点定义
第二个以前看到过
第三个我也没看懂……
l369294289
2011-08-16
打赏
举报
回复
[Quote=引用 7 楼 dongguan131 的回复:]
6楼头像是谁?告诉我吧。。。
[/Quote]
刘涛
luciferisnotsatan
2011-08-16
打赏
举报
回复
[Quote=引用 6 楼 anyidan 的回复:]
c 专家编程 有讲
--- 追赶法
(一个指针每次移动一步,另一指针每次移动两步)
[/Quote]
++
低头路过
2011-08-16
打赏
举报
回复
6楼头像是谁?告诉我吧。。。
AnYidan
2011-08-16
打赏
举报
回复
c 专家编程 有讲
--- 追赶法
(一个指针每次移动一步,另一指针每次移动两步)
zsc_ericluo
2011-08-16
打赏
举报
回复
[Quote=引用 2 楼 icemornings 的回复:]
这题怎么感觉那么熟悉……好像做过……
---------------
1、类似1楼的方法。
2、定义两个指针,fast和slow,fast每次走2步,slow每次走1步, 如果有环,那么最终fast和slow会相遇
(可以想象两个人以不同的速度在一个环形跑道上,快的人最终会再追上慢的人)
3、逆转链表,遍历链表并把每个节点的方向逆转(Header指向NULL,下一个节点指向Header………
[/Quote]
第二种方法效率貌似不好
第三个没看懂,见笑见笑。自己也只想到方法1,比较容易实现。。。
pengzhixi
2011-08-16
打赏
举报
回复
google "步长法"
modicum_lf
2011-08-16
打赏
举报
回复
个人愚见:
1.按顺序遍历,遍历的个数大于连表中结点的个数说明有环。
十道经典
面试
算法
真
题
详解
分享一下腾讯常考的十道
算法
题
(真
题
)。在金三银四,希望对大家有帮助呀。重排链表最长递增子序列环形链表反转链表最长回文子串全排列LRU 缓存合并K个升序链表无重复字符的最长子串删除链表的倒数第 N 个结点1. &...
面试
时
遇见
算法
题
该怎么办?
每周
一道
算法
题
,提升自己的...先聊聊,为什么要写这个每周
算法
题
系列,后面写
算法
题
的
时
候再说说
面试
时
遇见
算法
题
时
的解
题
思路 为什么写这个系列 LeetCode的
题
库,现在共有1020道
题
,把easy与hard难度的
题
目去掉...
阿里
面试
算法
题
面试
过程中
出
的
一道
算法
题
,应该算easy程度吧,
面试
过程中理解错了,审
题
很重要!
题
目:给定一串括号,判断是否符合规则,即相应左右括号数量匹配,右括号
出
现在左括号右面。 示例: 输入:([)[]{()} 输
出
:false ...
【微信事业群】趣味
面试
算法
题
今天和大家分享博主在腾讯二面期间
遇到
的两道比较有意思的
算法
题
,由Excel引
出
的两道
面试
算法
题
,可以点开上面的音乐,边听边看~。博主当
时
面的是微信事业群,截图如下: 二面主要是项目为主,其次就是
算法
。
算法
和...
8个
面试
应对
算法
题
小技巧
跟大家分享一些在处理
算法
题
时
的技巧和方法,尤其是在
面试
或者是比赛的
时
候应付难
题
的技巧。说不定就可以在关键
时
刻起到作用。冷静 首先要说的就是冷静,越是一些重要的节点,越是要冷静。一旦心里慌乱,手足无措,...
C语言
69,371
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章