0
点赞
收藏
分享

微信扫一扫

BM7 链表中环的入口结点

盖码范 2022-03-19 阅读 39

在这里插入图片描述
解题思路:声明两个指针,快指针一次走两步,慢指针一次走一步
在这里插入图片描述
最后的结论是:有环的话两个指针一定会相遇,且相遇点到环口的距离=起点到环口的距离
所以相遇之后,慢指针走一步,头结点走一步,最后一定会在环的入口相遇

/*
 public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}
*/
public class Solution {

    public ListNode EntryNodeOfLoop(ListNode pHead) {

        ListNode fast = pHead;
        ListNode slow = pHead;
        boolean flag = false;

        while (fast != null && fast.next != null) {
            fast = fast.next.next;
            slow = slow.next;
            if (fast == slow) {
                flag = true;
                break;
            }
        }
        if (!flag) {
            return null;
        }
        while (pHead != slow) {
            pHead = pHead.next;
            slow = slow.next;
        }
        return pHead;
    }
}
举报

相关推荐

0 条评论