Given a linked list, determine if it has a cycle in it.
Follow up:
Can you solve it without using extra space?
1:特殊情况;2:两个指针,slow,fast, 每一次slow走一步,fast走两步;如果两者相等的话,存在cycle;如果fast存在NULL的情况,则说明没有cycle
bool hasCycle(ListNode *head)
{
if(head == NULL || head->next == NULL)
{
return false;
}
ListNode *slowNode = head;
ListNode *fastNode = head;
while(fastNode && fastNode->next)
{
slowNode = slowNode->next;
fastNode = fastNode->next->next;
if(slowNode == fastNode)
{
return true;
}
}
return false;
}

本文介绍了一种使用双指针的方法来判断链表中是否存在循环。通过慢指针和快指针分别每次移动一步和两步的方式,如果两者相遇则表明链表有循环,反之则无。
128

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



