标签:
Given a linked list, return the node where the cycle begins.
If there is no cycle, return null
.
Example
Given -21->10->4->5
, tail connects to node index 1,return 10
Follow up:
Can you solve it without using extra space?
///
/** * Definition for ListNode. * public class ListNode { * int val; * ListNode next; * ListNode(int val) { * this.val = val; * this.next = null; * } * } */ public class Solution { /** * @param head: The first node of linked list. * @return: The node where the cycle begins. * if there is no cycle, return null */ public ListNode detectCycle(ListNode head) { // write your code here if(head==null ||head.next==null) return null; ListNode slow=head; ListNode fast=head; while(fast!=null || fast.next!=null) { fast=fast.next.next; slow=slow.next; if(fast==null|| fast.next==null) return null; if(fast==slow) break; } slow=head; while(slow!=fast) { slow=slow.next; fast=fast.next; } return fast; } }
标签:
原文地址:http://www.cnblogs.com/kittyamin/p/5132182.html