链接:https://www.nowcoder.com/questionTerminal/650474f313294468a4ded3ce0f7898b9?f=discussion
来源:牛客网
判断给定的链表中是否有环
扩展:
你能给出不利用额外空间的解法么?
用一快一慢指针,开始两个指针都指向链表头部。慢指针每次向前走一步,快指针每次向前走两步。如果有环,则两个指针最终一定会相遇。这种方法无须额外的空间。
class Solution {
public:
bool hasCycle(ListNode *head) {
if (!head) return false;
ListNode *slow = head, *fast = head;
while (fast && fast->next) {
slow = slow->next;
fast = fast->next->next;
if (slow == fast) return true;
}
return false;
}
};