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 }
标签:head,LeetCode142,ListNode,next,链表,Q22,quickIndex,node1,指针 From: https://www.cnblogs.com/cff1/p/18240212