Directorio de artículos
Introducción
La detección de anillo debería ser un problema de algoritmo muy común ¿Cómo juzgar si hay un problema de anillo?
Una forma muy sencilla es utilizar HashSet para guardar los datos que se van a recorrer, si hay una duplicación, sabrá que la lista enlazada está anillada. Pero este método necesita salvar todos los elementos atravesados, por lo que su complejidad espacial es o (n).
¿Hay alguna forma de determinar si hay un bucle sin guardar los elementos anteriores?
Eche un vistazo al algoritmo del conejo y la tortuga de Freud.
Sobre Freud
Algunos compañeros dirán, Freud (Sigmund Freud) que no conoce, el autor del análisis de los sueños, un famoso psicólogo y el fundador de la escuela psicoanalítica.
Pero el nombre completo de Freud del que estamos hablando aquí es Robert W. Floyd (Robert Freud) en lugar de Sigmund Freud.
Robert Freud es un científico informático, ganador del premio Turing, fundador del método de afirmación previa y posterior, y uno de los fundadores del algoritmo de clasificación de pilas y el algoritmo Floyd-Warshall.
Ganó el premio Turing en 1978 y es un "informático autodidacta".
Este algoritmo de conejo y tortuga es un algoritmo de detección de anillos que inventó.
Construye un anillo
en