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; } };