142. Linked List Cycle II
Given a linked list, return the node where the cycle begins. If there is no cycle, return null
.
Note: Do not modify the linked list.
Follow up:
Can you solve it without using extra space?
Similar: 141. Linked List Cycle
1 /** 2 * Definition for singly-linked list. 3 * class ListNode { 4 * int val; 5 * ListNode next; 6 * ListNode(int x) { 7 * val = x; 8 * next = null; 9 * } 10 * } 11 */ 12 public class Solution { 13 public ListNode detectCycle(ListNode head) { 14 ListNode fast = head, slow = head; 15 while (fast != null) { 16 fast = fast.next; 17 if (fast == null) return null; 18 fast = fast.next; 19 slow = slow.next; 20 if (fast == slow) break; 21 } 22 if (fast == null) return null; 23 slow = head; 24 while (slow != fast) { 25 slow = slow.next; 26 fast = fast.next; 27 } 28 return slow; 29 } 30 }