首页 > 代码库 > Leetcode: Linked List Cycle II

Leetcode: Linked List Cycle II

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?

一次过,还是Runner Technique的方法

 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 current = head;15         ListNode runner = head;16         if (head == null || head.next == null || head.next.next == null) return null;17         current = head.next;18         runner = head.next.next;19         while (runner != current && runner.next != null && runner.next.next != null) {20             runner = runner.next.next;21             current = current.next;22         }23         if (runner == current) {24             current = head;25             while (runner != current) {26                 runner = runner.next;27                 current = current.next;28             }29             return current;30         }31         return null;32     }33 }