首页 > 其他 > 详细

[LeetCode] Linked List Cycle

时间:2015-06-23 17:43:06      阅读:129      评论:0      收藏:0      [点我收藏+]

Given a linked list, determine if it has a cycle in it.

Follow up:
Can you solve it without using extra space?

 

Hide Tags
 Linked List Two Pointers
 
 
分析:经典的快慢指针法:
 
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
    public:
        bool hasCycle(ListNode *head)
        {   
            if(head == NULL)
                return false;

            ListNode* slow = head->next;
            ListNode* fast = NULL;

            if(slow)
                fast = slow->next;

            while(fast && slow)
            {   
                if(fast == slow)
                    return true;
                if(fast->next && fast->next->next)
                    fast = fast->next->next;
                else //reach the end
                    return false;
                slow = slow->next;
            }   
            return false;
        }   
};

 

 

[LeetCode] Linked List Cycle

原文:http://www.cnblogs.com/diegodu/p/4595685.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!