题解 | #链表中环的入口结点#
链表中环的入口结点
https://www.nowcoder.com/practice/253d2c59ec3e4bc68da16833f79a38e4
public class Solution {
public ListNode EntryNodeOfLoop(ListNode pHead) {
// 获取相遇位置
ListNode slow = isReverseLoop(pHead);
if (slow==null){
return null;
}
ListNode fast = pHead;
while (fast != slow){
fast = fast.next;
slow = slow.next;
}
return fast;
}
/**
* 判断是否是环表
* @param head
* @return
*/
private ListNode isReverseLoop(ListNode head){
if (head == null){
return null;
}
ListNode slow = head;
ListNode fast = head;
while (fast != null && fast.next != null){
slow = slow.next;
fast = fast.next.next;
if (slow == fast){
return slow;
}
}
return null;
}
}
