题解 | #链表中环的入口结点#

链表中环的入口结点

https://www.nowcoder.com/practice/253d2c59ec3e4bc68da16833f79a38e4

import java.util.*;
/*
 public class ListNode {
    int val;
    ListNode next = null;

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

    public ListNode EntryNodeOfLoop(ListNode pHead) {

        ListNode slow = loop(pHead);
        if (slow == null) {
            return null;
        }
        ListNode fast = pHead;
        while(fast != slow){
            fast = fast.next;
            slow = slow.next;
        }

        return slow;
    }

    public ListNode loop(ListNode pHead) {
        if (pHead == null) {
            return null;
        }
        ListNode l1 = pHead;
        ListNode l2 = pHead;
        while (l2 != null && l2.next != null) {
            l1 = l1.next;
            l2 = l2.next.next;
            if (l1 == l2) {
                System.out.println(l1.val);
                System.out.println(l2.val);
                return l1;
            }
        }
        return null;
    }
}

1.第一步用快慢指针判断是否有相交点,如果是,说明是环
2.根据数学等式,相交点到坏起始点和从链表头节点到环起点走的路程一样

全部评论

相关推荐

北漂的牛马人:211佬,包进的,可能是系统问题
点赞 评论 收藏
分享
qq乃乃好喝到咩噗茶:院校后面加上211标签,放大加粗,招呼语也写上211
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务