美文网首页
链表的环和入口

链表的环和入口

作者: Deeglose | 来源:发表于2019-02-15 00:33 被阅读1次

环的探测: 通过一个slow和fast指针,如果他们能够相遇,就能证明有环。
如何确定环的入口?

展开的环

假定一个环展开如上图,其中y表明环的前y个点, N表示环的部分。通过将环展开,我们得到上图的形式。

现在我们可以假定在fast指针和slow指针相遇时,处于N的第r个,则可以证明:2r + y = r + XN, 可得r = XN - y其中X是整数, 0<=r<N, 可知 1 + y/N > X > y/N
则此时在相遇点将N分成两部分:r 和 N - r,假定一个指针将后面的N - r部分走完,另一个指针从头部重新走,则头部指针到环的入口剩余y - N + r = (X-1)N, 此时另外一个指针恰好位于环的入口。它们距离环都是N的整数倍,所以它们只需要按步长为1进行递增,最终第一个相遇的位置一定是环的入口。

代码如下:

/**
 * Definition for singly-linked list.
 * class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) {
 *         val = x;
 *         next = null;
 *     }
 * }
 */
public class Solution {
    public ListNode detectCycle(ListNode head) {
        if(head==null){
            return null;
        }
        ListNode fast = head;
        ListNode slow = head;
        while(fast!=null && fast.next!=null){
            fast = fast.next.next;
            slow = slow.next;
            if(slow == fast){
                fast = head;
                while(fast!=slow){
                    fast = fast.next;
                    slow = slow.next;
                }
                return fast;
            }
        }
        return null;
    }
}

相关文章

  • 链表的环和入口

    环的探测: 通过一个slow和fast指针,如果他们能够相遇,就能证明有环。如何确定环的入口? 假定一个环展开如上...

  • 链表

    合并排序链表 链表排序 链表中环的入口结点 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出nul...

  • 面试题23(剑指offer)--链表中环的入口节点

    题目: 给一个链表,若其中包含环,请找出该链表的环的入口结点。 思路: �链表中环的入口节点 先确定有环,用快慢指...

  • 编程案例自我总结(二)

    16.链表环的入口:如果一个连表中包含环,求出环的入口节点(回归链表的地方)。 思路:1.确认环是否存在 ...

  • 剑指offer.C++.code56-60

    56. 链表中环的入口结点 一个链表中包含环,请找出该链表的环的入口结点。 57. 删除链表中重复的结点【基于递归...

  • 链表寻找环的入口

    给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。 分析:如何判断有环?如何找到环的入口节...

  • 环链表入口

    题目描述:给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。 思路:快(一次两步)慢(一次...

  • 面试题24-找到链表中环的入口

    题目要求 找到链表中的环的入口节点 题目解析 思路一: 分析 要得到链表中的环的入口节点,那么我们首先需要确定链表...

  • [剑指offer] 链表

    链表中环的入口结点 题目描述给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。 解题思路:...

  • 剑指 offer:55、链表中环的入口节点

    55. 链表中环的入口节点 题目描述 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。 ...

网友评论

      本文标题:链表的环和入口

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