码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode -- Linked List Circle ii

时间:2015-09-12 21:48:33      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:

Question:

Given a linked list, return the node where the cycle begins. If there is no cycle, return null.

 

Analysis:

只想到了,首先判断是否有环,若有环,则总链首开始,一次判断是否是环的开始,这样T(O) = O(n^2)。

其实是一个数学问题,详细思路参照链接http://blog.csdn.net/sbitswc/article/details/27584037 。

 

Answer:

    
    public ListNode detectCycle(ListNode head) {
        ListNode fast = head, slow = head;
        while(fast != null && fast.next != null) {
            fast = fast.next.next;
            slow = slow.next;
            if(fast == slow)
                break;
        }
        
        if(fast == null || fast.next == null)
            return null;
        
        slow = head;
        while(fast != slow) {
            fast = fast.next;
            slow = slow.next;
        }
        return fast;
    }

 

LeetCode -- Linked List Circle ii

标签:

原文地址:http://www.cnblogs.com/little-YTMM/p/4803631.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!