不管怎么样slow最多走半圈了,
快慢指针slow走一步,fast走两步最合适,因为假设fast和slow相差n每一次他们前进,就会相差n-1步,这样他们一定会相遇,如果是环形链表的话。
代码
/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */ bool hasCycle(struct ListNode *head) { struct ListNode *fast=head; struct ListNode *slow=head; while(fast && fast->next) { slow=slow->next; fast=fast->next->next; if(fast == slow) { return true; } } return false; }
自用笔记,文章质量不行!!!