输入: {3,2,0,-4},1 复制 返回值: true 复制 说明: 第一部分{3,2,0,-4}代表一个链表,第二部分的1表示,-4到位置1,即-4->2存在一个链接,组成传入的head为一个带环的链表 ,返回true
我们使用两个指针,fast 与 slow。 它们起始都位于链表的头部。随后,slow 指针每次向后移动一个位置,而fast 指针向后移动两个位置。如果链表中存在环,则 fast 指针最终将再次与 slow 指针在环中相遇。
class Solution {
public:
bool hasCycle(ListNode *head) {
if(head==NULL)
{
return false;
}
ListNode* fast = head;
ListNode* slow = head;
while(fast!=NULL && slow!=NULL)
{
slow = slow->next;
if(fast->next)
fast = fast->next->next;
else
return false;
if(slow == fast)
return true;
}
return false;
}
};
|