题目描述
判断给定的链表中是否有环。如果有环则返回true,否则返回false。
你能给出空间复杂度的解法么?
解法
拿到这道题,我先想的简单了,以为有环是指头尾相接连成环,后来看评论才知道也可能是尾结点又指向中间某个结点。
可以用快慢指针。
class Solution {
public:
bool hasCycle(ListNode *head) {
ListNode* fast = head;
ListNode* slow = head;
while(slow != NULL && fast->next != NULL && fast->next->next != NULL)
{
fast = fast->next->next;
slow = slow->next;
if(fast==slow)
{
return true;
}
}
return false;
}
};
时间复杂度O(n)
空间复杂度O(1)