您的位置:首页 > 其它

Linked List Cycle II

2014-01-02 14:28 218 查看
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?

/**
* Definition for singly-linked list.
* class ListNode {
*     int val;
*     ListNode next;
*     ListNode(int x) {
*         val = x;
*         next = null;
*     }
* }
*/
public class Solution {
public ListNode detectCycle(ListNode head) {
ListNode fast = head;
ListNode slow = head;

//Find the cycle point
while(fast != null && fast.next !=null) {
slow = slow.next;
fast = fast.next.next;
if(slow == fast) {
break;
}
}

if(fast == null || fast.next == null) {
return null;
}

slow = head;
while(slow != fast) {
slow = slow.next;
fast = fast.next;
}

return fast;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  List