Notas da lista de toques (para uso pessoal)

lista encadeada circular

insira a descrição da imagem aqui
insira a descrição da imagem aqui
insira a descrição da imagem aqui
Em todo caso, lento pode andar meio círculo no máximo, e
os ponteiros rápidos e lentos dão um passo em lento, e dois passos em rápido são os mais adequados, porque assumindo que a diferença entre rápido e lento é n toda vez que eles se movem adiante, haverá uma diferença de n-1 passos, então eles definitivamente se encontrarão, se for uma lista encadeada circular.
o 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 pessoal, a qualidade do artigo não é boa! ! !

Acho que você gosta

Origin blog.csdn.net/2301_76895050/article/details/132371357
Recomendado
Clasificación