您的位置:首页 > 其它

leetcode--Linked List Cycle II

2017-08-08 12:46 435 查看
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?

[java] view
plain copy

/** 

 * 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) {  

        if(null == head || null == head.next) return null;  

        ListNode slow = head;  

        ListNode fast = head;  

        while(slow != null && fast != null && fast.next != null){  

            slow = slow.next;  

            fast = fast.next.next;  

            if(slow == fast){  

                slow = head;  

                while(slow != fast){  

                    slow = slow.next;  

                    fast = fast.next;  

                }  

                return slow;  

            }  

        }  

        return null;  

    }  



原文链接http://blog.csdn.net/crazy__chen/article/details/46563883
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: