题解 | #链表中环的入口结点#
链表中环的入口结点
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.根据数学等式,相交点到坏起始点和从链表头节点到环起点走的路程一样