es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Eliminar duplicados de una lista ordenada en Javascript.

Dado el encabezado de una lista enlazada ordenada, elimine todos los duplicados de tal manera que cada elemento aparezca solo una vez. Devuelva la lista enlazada ordenada también.

Entrada: cabeza = [1,1,2]
Salida: [1,2]

Solución:

    let curr=head;
    while(curr && curr.next){

    if(curr.val===curr.next.val){
        curr.next=curr.next.next;
    }
    else{
        curr=curr.next;
    }
}

return head;

Estoy tratando de resolver esta pregunta en LeetCode y encontré una solución que no puedo entender una cosa, ¿por qué estamos tomando el head en la variable let curr? Y, si intento hacer lo mismo sin tomar head en otra variable, solo obtengo [2] como salida.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El nodo head de una lista enlazada es el punto de inicio de la lista, y contiene el primer elemento de la lista. En la solución dada, head se asigna a curr porque queremos recorrer toda la lista enlazada desde el principio.

    Si intentas resolver el problema sin tomar head en otra variable, no funcionará correctamente. Esto se debe a que si modificas el nodo head directamente, perderás el punto de inicio de la lista y no podrás devolver la lista ordenada. Además, al eliminar duplicados, necesitas comprobar si el nodo actual y el siguiente tienen el mismo valor. Si empiezas desde el segundo nodo, te perderás el primer elemento duplicado.

    Por lo tanto, es importante utilizar una variable separada como curr para recorrer la lista enlazada y modificar sus nodos manteniendo el head original intacto. De esta manera, puedes eliminar duplicados y devolver la lista enlazada ordenada sin perder ningún dato.

Comments are closed.