题目描述:如何判断一个链表中有环,若有环返回其入口节点。
题目链接:
public class DetectCycle {
public ListNode detectCycle(ListNode head){
ListNode slow=head;
ListNode fast=head;
while(fast!=null&&fast.next!=null){//避免空指针异常
slow=slow.next;
fast=fast.next.next;
if(slow==fast){ //找到第一次相遇的位置
ListNode slow2=head;
while(slow!=slow2){ //再开启第三个指针 找到环的入口即 a=(n-1)(b+c)+c
slow=slow.next;
slow2=slow2.next;
}
return slow;
}
}
return null;
}
}
参考:https://blog.nowcoder.net/n/c42a259697014745b1688f9c6795d206?f=comment