快慢指针
始终先快指针走两步,然后判断是否相遇,如果相遇则返回true
若没有相遇,则慢指针向前走一步,一直循环,直到相遇或者快指针等于空为止。
class Solution {
public:
bool hasCycle(ListNode *head) {
if(head == nullptr)
return false;
ListNode *slow = head;
ListNode *fast = head;
while(fast != nullptr && fast->next != nullptr){
fast = fast->next->next;
if(fast == slow)
return true;
slow = slow->next;
}
return false;
}
};
京公网安备 11010502036488号