/*
struct ListNode
{
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
*/
class Solution {
public:
bool hasCycle(ListNode *head)
{
ListNode* fast=head;
ListNode* slow=head;
while(*fast!=NULL&&(*(fast->next)!=NULL))
{
fast=fast->next->next;
slow=slow->next;
if(fast==slow)
return 1;
}
return 0;
}
};
题解:两个指针,一个一次走两个,一个一次走一个,如果可以再次相遇则说明链表存在循环。注意卡边界条件,即fast的两次移位都没有移出边界