题目描述:
给一个单向链表,判断是否有环。
解题思路:
设一个慢指针和一个快指针,初始化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; }