美文网首页
寻找链表中环的起始位置

寻找链表中环的起始位置

作者: Jiafu | 来源:发表于2017-09-29 15:20 被阅读0次

解法如下:
定义两个指针:p1和p2,当p2按照每次2步,p1每次一步的方式走,发现p2和p1重合,确定了单向链表有环路了。
接下来,让p2回到链表的头部,重新走,每次步长不是走2了,而是走1,那么当p1和p2再次相遇的时候,就是环路的入口了。
这点可以证明的:
在p2和p1第一次相遇的时候,假定p1走了n步骤,环路的入口是在p步的时候经过的,那么有
p1走的路径: p+c = n; c为p1和p2相交点,距离环路入口的距离
p2走的路径: p+c+kL = 2N; L为环路的周长,k是整数
显然,如果从p+c点开始,p1再走n步骤的话,还可以回到p+c这个点
同时p2从头开始走的话,经过n步,也会达到p+c这点
显然在这个步骤当中p1和p2只有前p步骤走的路径不同,所以当p1和p2再次重合的时候,必然是在链表的环路入口点上。

相关文章

  • 寻找链表中环的起始位置

    解法如下:定义两个指针:p1和p2,当p2按照每次2步,p1每次一步的方式走,发现p2和p1重合,确定了单向链表有...

  • 寻找链表中环的位置

    参考https://blog.csdn.net/zwx900102/article/details/1222935...

  • lintcode-带环链表II

    给定一个链表,如果链表中存在环,则返回到链表中环的起始节点的值,如果没有环,返回null。

  • 带环链表 II

    给定一个链表,如果链表中存在环,则返回到链表中环的起始节点的值,如果没有环,返回null。 思路详解 leetco...

  • 带环链表2

    描述 给定一个链表,如果链表中存在环,则返回到链表中环的起始节点的值,如果没有环,返回 null。 样例 代码实现

  • 142. Linked List Cycle II

    题目描述:给一个链表,判断其中环的起始结点,若没有环则返回null。要求不改变链表,空间复杂度O(1)。 分析:这...

  • 142. 环形链表 II

    要求出环形链表的起始点难点在于如何推出起始点的位置首先假设链表的长度为b,其余长度为a 关键:走到起始点,必须走a...

  • Linked-list-cycle

    问题 判断链表中是否有环,如果有,找出链表中环的起始节点 解决 首先找出环的话可以用快慢节点法,快节点的速度是2,...

  • 7、合并两个短list

    描述 链表题,要用temp标记起始位置,最后输出temp.next。

  • 关于链表经典算法题都在这里了

    1.单链表反转(LeetCode 206) 2.链表中环的检测 (LeetCode 141) 3.求链表中环开始结...

网友评论

      本文标题:寻找链表中环的起始位置

      本文链接:https://www.haomeiwen.com/subject/qhmiextx.html