题目描述:
给一个单向链表,判断是否有环。
解题思路:
设一个慢指针和一个快指针,初始化slow为头指针,fast为头指针的next指针。
slow每次走一步,fast每次走两步,一直到fast为空,表示不存在环,或者slow指针和fast指针相遇,表示有环。
代码如下:
bool hasCycle(ListNode *head) {
if (head == NULL) {
return false;
}
ListNode* slow = head;
ListNode* fast = head->next;
while (fast != NULL) {
if (slow == fast) {
return true;
}
slow = slow->next;
fast = fast->next;
if (fast != NULL) {
fast = fast->next;
}
}
return false;
}