题目描述:对于一个给定的链表,返回环的入口节点,如果没有环,返回null。( 拓展:你能给出不利用额外空间的解法么? )
public class Solution {
public ListNode detectCycle(ListNode head) {
if(head == null) return null;
ListNode slow = head;
ListNode quick = head;
boolean isCircle = false;
while(quick != null && quick.next != null) {
slow = slow.next;
quick = quick.next.next;
if(slow == quick) {
isCircle = true;
break;
}
}
if(!isCircle) return null;
ListNode start = head;
while(start != slow) {
start = start.next;
slow = slow.next;
}
return start;
}
}