首页 > 代码库 > Problem Linked List Cycle II

Problem Linked List Cycle II

Problem Description:

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

Follow up:
Can you solve it without using extra space?

 

 Solution:
 1     public ListNode detectCycle(ListNode head) { 2         if (head == null) return null; 3         if (head.next == null || head.next.next == null) return null;  4         ListNode tortoise = head.next; 5         ListNode hare = head.next.next; 6         while (tortoise != hare) { 7             if (tortoise.next == null) return null; 8             tortoise = tortoise.next; 9             if (hare.next == null || hare.next.next == null) return null;10             hare = hare.next.next;11         }12 13         tortoise = head;14         while(tortoise != hare) {15             tortoise = tortoise.next;16             hare = hare.next;17         }18 19         return tortoise;20     }