链表中环的入口点
题目描述
对于一个给定的链表,返回环的入口节点,如果没有环,返回null
拓展:
你能给出不利用额外空间的解法么?
分析描述
package 牛客.链表;/*
*@Author: helen
*@Date: 2021/4/23 10:41
*@Description:
*/
public class 链表中环的入口点 {
public ListNode detectCycle(ListNode head) {
if (head == null) {
return null;
}
ListNode slow = head;
ListNode fast = head;
ListNode Entry = null;
while (fast.next != null && fast.next.next != null) {
slow = slow.next;
fast = fast.next.next;
if (fast == slow) { //快慢指针相遇,有环
Entry = slow;
break;
}
}
if (Entry == null) {
return null;
}
fast = head; //快指针从头开始,与慢指针相遇时,则为入口点
while (fast != slow) {
fast = fast.next;
slow = slow.next;
}
return fast;
}
}