题目描述
判断链表是否有环
题目解析:
- 使用set,遍历时如果不在set中,则加入set,如果已经在set中,说明之前已经出现过,那么返回true.
- 使用快慢指针:slow每次走一步,fast每次都2步,如果有环一定会相遇,即fast == slow
bool hasCycle(ListNode*head)
{
if(head == nullptr || head->next==nullptr) return false;
ListNode * slow = head;
ListNode * fast = head->next;
while (fast !=nullptr && fast->next != nullptr)
{
if(fast == slow)
{
return true;
}
fast = fast->next->next;
slow = slow->next;
}
return false;
}