Linked List Cycle II

 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 }
View Code

Given a linked list, return the node where the cycle begins. If there is no cycle, return null.

posted @ 2014-02-22 13:09  krunning  阅读(95)  评论(0编辑  收藏  举报