美文网首页
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