【Leetcode】141. Linked List Cycle

题目描述:

给一个单向链表,判断是否有环。

解题思路:

设一个慢指针和一个快指针,初始化slow为头指针,fast为头指针的next指针。

slow每次走一步,fast每次走两步,一直到fast为空,表示不存在环,或者slow指针和fast指针相遇,表示有环。

代码如下:

bool hasCycle(ListNode *head) {
    if (head == NULL) {
        return false;
    }
    
    ListNode* slow = head;
    ListNode* fast = head->next;
    
    while (fast != NULL) {
        if (slow == fast) {
            return true;
        }
        slow = slow->next;
        fast = fast->next;
        if (fast != NULL) {
            fast = fast->next;
        }
    }
    
    return false;
}
原文地址:https://www.cnblogs.com/AndrewGhost/p/9384067.html