龜兔指針:
龜指針slowPtr每次后移1個結(jié)點。兔指針fastPtr每次后移2個結(jié)點
ListNode findLinkedListLoopBegin(ListNode head){
if(head==null){
return null;
}
ListNode slowPtr=head;
ListNode fastPtr=head;
boolean isLinkedListContainsLoop=false;
while(slowPtr.next!=null && fastPtr.next.next!=null){
slowPtr=slowPtr.next;
fastPtr=fastPtr.next.next;
if(slowPtr==fastPtr){
isLinkedListContainsLoop=true;
break;
}
}
if(isLinkedListContainsLoop){
slowPtr=head;
while(slowPtr!=fastPtr){
slowPtr=slowPtr.next;
fastPtr=fastPtr.next;
}
return slowPtr;
}
return null;
}