141.Linked List Cycle 快慢指针

Posted 妖域大都督

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了141.Linked List Cycle 快慢指针相关的知识,希望对你有一定的参考价值。

问题描述:

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

 

我的思路:

用一个指针指向链表头部,另一个指针在链表上移动。若两个指针指向地址相等,则存在环。

然后我没过OJ:)

因为循环链表的尾部并不一定链接头部,可能链接任意节点,此时会陷入死循环。

所以应用快慢指针。

两个指针的步长不同,若存在环,必然会相遇。

 

代码实现(c++):

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

 

以上是关于141.Linked List Cycle 快慢指针的主要内容,如果未能解决你的问题,请参考以下文章

[LeetCode] 141. Linked List Cycle

[leetcode]141. Linked List Cycle判断链表是否有环

LeetCode141 Linked List Cycle. LeetCode142 Linked List Cycle II

[Leetcode]141. Linked List Cycle

141. Linked List Cycle

easy141. Linked List Cycle