题目:一个链表中包含环,请找出该链表的环的入口结点。
这是一个在面笔试中问烂了的问题,虽然以前也做过,也知道怎么做,但是总是想推导出具体的数学公式,这样才具有 说服力,今天又重新温习了一下,做了一下数学公式的推导,然后做一下总结;
1、做此类题首先得判断单链表 是否有环,当然这个题目已经告诉我们是有环的链表啦。
判断有环的方法就是用两个快慢指针p1、p2,p2的速度为P1的两倍,两个指针同时从链表的头结点开始出发,当两个结点再一次相遇的时,说明此链表有环。
2、光判断有环还不够,下一步就是要找到环的入口,这一步的推导相对麻烦一些。
且看下图

本文介绍如何解决面试中常见的链表问题——找出含有环的链表的环入口节点。通过使用快慢指针判断链表有环,并通过数学推导找到环的入口。当两个指针在环内相遇时,根据它们行走的距离关系,可以确定环的入口位置。最后提供Java代码实现这一逻辑。
最低0.47元/天 解锁文章
668

被折叠的 条评论
为什么被折叠?



