1.使用快慢指標
2.快指標向後移動兩個位置,慢指標向後移動一個位置
3.若快慢指標能相等,則有環
4.將一個指標指向head,一個指標指向fast,挨個向後遍歷,相等即進環點
1 public class Solution { 2 public ListNode detectCycle(ListNode head) { 3 ListNode quickIndex=head; 4 ListNode slowIndex=head; 5 while(quickIndex!=null&&quickIndex.next!=null ){ 6 quickIndex=quickIndex.next.next; 7 slowIndex=slowIndex.next; 8 if(slowIndex==quickIndex){ 9 ListNode node1=quickIndex; 10 ListNode node2=head; 11 while(node1!=node2){ 12 node1=node1.next; 13 node2=node2.next; 14 } 15 return node1; 16 } 17 } 18 return null; 19 20 } 21 }