题目:

算法思想: 如果没有环,那么最后指针一定会指向NULL。如果有环,设定一个快指针和一个慢指针,那么两个指针一定会相遇。
代码:
bool hasCycle(ListNode *head) {
ListNode *fast = head;
ListNode *slow = head;
while(fast != NULL)
{
if(fast->next != NULL && fast->next->next != NULL)
fast = fast->next->next;
else
return false;
slow = slow->next;
if(slow == fast)
return true;
}
return false;
}
本文介绍了一种用于检测链表中是否存在环的高效算法。通过使用快慢指针技巧,可以在O(n)的时间复杂度内完成检测,而不需要额外的空间。如果链表中存在环,快慢指针最终会相遇;若不存在,则快指针会首先到达链表尾部。
387

被折叠的 条评论
为什么被折叠?



