- 思路
判断链表是否有环
- 构建快慢指针
- 慢指针每次移动一个节点,快指针每次移动两个节点,当两指针相等时,说明该链表有环
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution
{
public:
bool hasCycle(ListNode *head)
{
if(head == nullptr)
{
return false;
}
if(head->next == nullptr)
{
return false;
}
ListNode* fastNode=head;
ListNode* slowNode=head;
while(fastNode->next != nullptr && slowNode->next != nullptr && fastNode->next->next != nullptr)
{
slowNode = slowNode->next;
fastNode = fastNode->next->next;
if(fastNode == slowNode)
{
return true;
}
}
return false;
}
};