美文网首页
2018-12-03 - Linked List Cycle

2018-12-03 - Linked List Cycle

作者: DejavuMoments | 来源:发表于2018-12-04 19:44 被阅读8次

    判断链表有没有环。可以利用“快慢指针”来解题。设置两个指针 walker 和 runner,walker 每次移动一步,runner 每次移动两步。如果链表有环的话,那么walker 和 runner 一定会相遇。

    /**
     * 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) return false;
            ListNode* p1 = head;
            ListNode* p2 = head;
           
            while(p2 && p2->next){
                p1 = p1->next;
                p2 = p2->next->next;
                
                if(p1 == p2){
                    return true;
                }
            }
            return false;
        }
    };
    

    Leetcode: O(1)-Space-Solution
    漫画算法:如何判断链表有环?
    判断链表中是否有环 ----- 有关单链表中环的问题
    关于链表的面试问题(判断一个单链表中是否有环)
    给定单链表,判断是否有环,如果有返回环入口

    相关文章

      网友评论

          本文标题:2018-12-03 - Linked List Cycle

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