题解 | #链表中环的入口结点#
链表中环的入口结点
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) {
if (pHead == null || pHead.next == null){
return null;
}
// 使用双指针,一个快指针,一个慢指针
ListNode fastNode = pHead;
ListNode slowNode = pHead;
while (fastNode != null && slowNode != null){
fastNode = fastNode.next.next;
slowNode = slowNode.next;
// 如果说两个节点一致,那么证明有环,否则就是五环
if (fastNode == slowNode){
ListNode temp = pHead;
// 一直找,直到找到头节点和环的节点一致的节点,返回的就是环的入口
while (temp != slowNode){
temp = temp.next;
slowNode = slowNode.next;
}
return temp;
}
}
return null;
}
}

查看17道真题和解析