1 public class Solution { 2 public ListNode detectCycle(ListNode head) { 3 if(head==null) return head; 4 ListNode fast = head; 5 ListNode slow = head; 6 while(fast!=null){ 7 slow = slow.next; 8 fast = fast.next; 9 if(fast!=null) 10 fast = fast.next; 11 if(fast==slow) break; 12 } 13 if(fast==null) return null; 14 slow = head; 15 while(slow!=fast){ 16 slow =slow.next; 17 fast = fast.next; 18 } 19 return slow; 20 } 21 }
Given a
linked list, return the node where the cycle begins. If there is no cycle,
return null
.
原文:http://www.cnblogs.com/krunning/p/3560683.html