输入:head = [3,2,0,-4], pos = 1
输出:true
解释:链表中有一个环,其尾部连接到第二个节点
使用快慢指针法进行判断链表是否成环。
class Solution {
public:
bool hasCycle(ListNode *head) {
if (head == nullptr || head->next == nullptr) {
return false;
}
ListNode* slow = head;
ListNode* fast = head->next; // 与下方 while 循环对应,若为 head,则循环不执行
while (slow != fast) { // 判断链表成环
if (fast == nullptr || fast->next == nullptr) { // 链表不成环,直接return
return false;
}
slow = slow->next;
fast = fast->next->next;
}
return true;
}
};