给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null
//创建一个环
public void crateLoop1() {
ListNode cur=this.head;
while(cur.next != null) {
cur=cur.next;
}
cur.next=this.head.next.next;
}
public ListNode detectCycle() {
ListNode fast=this.head;
ListNode slow=this.head;
while(fast !=null && fast.next !=null) {
fast=fast.next.next;
slow=slow.next;
if(slow==fast) {
break;
}
}
if(fast==null || fast.next==null) {
return null;
}
slow=this.head;
while (fast != slow) {
fast=fast.next;
slow=slow.next;
}
return slow;
}
测试结果:
1 2 3 4 5
3