美文网首页
环形链表

环形链表

作者: juexin | 来源:发表于2017-04-18 16:46 被阅读0次

    **141. Linked List Cycle **
    Given a linked list, determine if it has a cycle in it.
    代码如下:

    class Solution {
    public:
        bool hasCycle(ListNode *head) {
            ListNode* fast = head;
            ListNode* slow = head;
            while(slow&&fast&&fast->next)
            {
                fast = fast->next->next;
                slow = slow->next;
                if(fast==slow)
                    return true;
            }
            return false;
        }
    };
    

    **142. Linked List Cycle II **
    Given a linked list, return the node where the cycle begins. If there is no cycle, return null.
    代码如下:

    class Solution {
    public:
        ListNode *detectCycle(ListNode *head) {
            ListNode* fast = head;
            ListNode* slow = head;
            while(slow&&fast&&fast->next)
            {
                fast = fast->next->next;
                slow = slow->next;
                if(slow==fast)
                    break;
            }
            if(fast==NULL||fast->next==NULL)
               return NULL;
            slow = head;
            while(fast!=slow)
            {
                fast = fast->next;
                slow = slow->next;
            }
            return fast;
        }
    };
    

    相关文章

      网友评论

          本文标题:环形链表

          本文链接:https://www.haomeiwen.com/subject/tlqqzttx.html