下图所示:
说明:
第一部分{3,2,0,-4}代表一个链表,第二部分的1表示,-4到位置1(注:头结点为位置0),即-4->2存在一个链接,组成传入的head为一个带环的链表,返回true
示例2
输入:
{1},-1
返回值:
false
说明:
第一部分{1}代表一个链表,-1代表无环,组成传入head为一个无环的单链表,返回false
示例3
输入:
{-1,-7,7,-4,19,6,-9,-5,-2,-5},6
返回值:
true
上代码:
用快慢指针的方法:
#include <stdbool.h>
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
/**
*
* @param head ListNode类
* @return bool布尔型
*/
bool hasCycle(struct ListNode* head ) {
// write code here
if(head==NULL||head->next==NULL)
{
return NULL;
}
struct ListNode*slow=head->next,*fast=head->next->next;
while(fast!=NULL&&fast->next!=NULL)
{
if(fast==slow)
return true;
slow=slow->next;
fast=fast->next->next;
}
return false;
}