两步利用快慢指针判断是否存在环——如果快指针最后指向NULL,则不存在环,如果快慢指针相遇则存在环。

代码如下:

//
// Created by jt on 2020/9/23.
//
class Solution {
public:
    bool hasCycle(ListNode *head) {
        if(!head) return false;
        ListNode *fast = head, *slow = head;
        while(fast && fast->next) {
            fast = fast->next->next;
            slow = slow->next;
            if (fast == slow) return true;
        }
        return false;
    }
};