- 题目:
给定一个链表,判断链表中是否有环。
为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。
-
解题思路:
双指针法:利用两个指针,fast指针一次走两步,slow指针一次走一步,
fast == slow return true
fast == nullptr || fast->next == nullptr return false -
代码实现:
bool hasCycle(ListNode *head) {
ListNode *slow = head, *fast = head;
while(fast!=nullptr && fast->next != nullptr )
{
slow = slow->next;
fast = fast->next->next;
if(slow == fast)
return true;
}
return false;
}
- 复杂度分析
时间复杂度:O(n)
空间复杂度:O(1)