1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| struct ListNode { int val; ListNode *next; ListNode(int x) : val(x) , next(nullptr) { } };
class Solution { public: bool hasCycle(ListNode *head) { ListNode *low = head, *fast = head; do { if (low == nullptr || low->next == nullptr) { return false; } else { low = low->next; } if (fast == nullptr || fast->next == nullptr || fast->next->next == nullptr) { return false; } else { fast = fast->next->next; }
} while (low != fast);
if (low != nullptr) { return true; } return false; } };
|