En cualquier caso, lento puede caminar medio círculo como máximo, y
los punteros rápido y lento dan un paso lento, y dos pasos rápido son los más apropiados, porque suponiendo que la diferencia entre rápido y lento es n cada vez que se mueven adelante, habrá una diferencia de n-1 pasos, por lo que definitivamente se encontrarán, si se trata de una lista enlazada circular.
el código
/**
* 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;
}
Notas para uso personal, ¡la calidad del artículo no es buena! ! !