Leetcode 142 circular da Lista II ligada

Assunto Descrição:

Dada uma lista, devolva o primeiro nó para o início do anel de corrente. Se a cadeia acíclica, NULL é retornado. (Espaço extra NA)

solução:

algoritmo de Floyd

1. Descobrir se existe uma lista de anéis de dedo velocidade.

2. Utilização encontro Encontrado identificar os nós step.1 anel de entrada.

prova step.2 eu vou roubar leetcode no mapa para a solução do problema

 

 

Código AC:

classe Solution {
 público : 
    ListNode * fisrtM (ListNode * cabeça) 
    { 
        ListNode * lento; 
        ListNode * mais rápido; 
        lentas mais rápidos = = cabeça;
        enquanto (mais rápido =! NULL) 
        { 
            retardar = lenta> próxima;
            se (faster-> próxima == null) return NULL; 
            mais rápido = faster-> NEXT-> próxima;
            se (== lento mais rápido) retornar lenta; 
        } 
        returnNULO; 

    } 
    ListNode * detectCycle (ListNode * cabeça) {
         se (cabeça == null) return NULL; 
        ListNode * fm = fisrtM (cabeça);
        se (fm == null) return NULL; 
        ListNode * ans = cabeça;
        enquanto (ans =! fm) 
        { 
            ans = ANS> próxima; 
            fm = FM-> próxima; 
        } 
        Retornar ans; 
        
    } 
};

 

Acho que você gosta

Origin www.cnblogs.com/z1141000271/p/12454262.html
Recomendado
Clasificación