?如何判定走的圈数重点,还有fast!=null,,fast.next!=null,,fast.next.next!=null把我整迷糊了
?
public class Solution {
public ListNode detectCycle(ListNode head) {
ListNode fast=new ListNode();
fast=head;
ListNode slow=new ListNode();
slow=head;
if(head==null||head.next==null)
return null;
while(fast!=null&&fast.next!=null){//这里迷糊
fast=fast.next.next;
slow=slow.next;
if(fast==slow)
break;// return slow;//此时是slow追上的位置,但是这里并不是环的入口
}
if(slow==fast){//这里重点
fast=head;
while(fast!=slow){
fast=fast.next;
slow=slow.next;
}
return slow;
}
return null;
}
}
|