Categorías
Algorithms

Leetcode – Ciclo de lista enlazada

Dada una lista vinculada, determine si tiene un ciclo.

Análisis

Si tenemos 2 punteros: rápido y lento. Está garantizado que el rápido se encontrará con el lento si existe un círculo.

El problema se puede demostrar en el siguiente diagrama:

Solución Java

public class Solution {
    public boolean hasCycle(ListNode head) {
        ListNode fast = head;
        ListNode slow = head;
 
        while(fast != null && fast.next != null){
            slow = slow.next;
            fast = fast.next.next;
 
            if(slow == fast)
                return true;
        }
 
        return false;
    }
}

  LeetCode - Elemento mayoritario (Java)

Por Programación.Click

Más de 20 años programando en diferentes lenguajes de programación. Apasionado del code clean y el terminar lo que se empieza. ¿Programamos de verdad?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *