判断链表是否有环。
    image.png
    思路就是用快慢指针,慢的每次走一步,快的每次走两步,如果有环,则快慢指针必定相交。

    需要注意的是,快指针走两步是,需要确定下一步是否为空。

    1. bool hasCycle(ListNode *head) {
    2. if (head == nullptr || head->next== nullptr)
    3. return false;
    4. ListNode *slow = head;
    5. ListNode *fast = head->next->next;
    6. while(fast) {
    7. if (slow == fast)
    8. return true;
    9. slow = slow->next;
    10. if (fast->next == nullptr)
    11. return false;
    12. fast = fast->next->next;
    13. }
    14. return false;
    15. }