/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
bool hasCycle(struct ListNode *head) {
if(head==NULL)
{
return false;
}
typedef struct ListNode list;
list *sed=head; //双指针,只要步数不同就会相遇
list *fir=head;
while(sed)
{
sed = sed->next;
if(fir->next&&fir->next->next)
{
fir = fir->next->next;
}
else
{
break;
}
if(sed==fir)
{
return true;
}
}
return false;
}
141. 环形链表个人解法
该代码实现了一个函数`hasCycle`,用于检查给定的单链表是否包含环。它使用了双指针技术,一个指针每次移动一步,另一个移动两步。如果链表中存在环,两个指针最终会相遇;否则,当移动两步的指针到达链表末尾时,链表无环。
摘要由CSDN通过智能技术生成