Implementación de JavaScript "BM15 Eliminar elementos duplicados en la lista ordenada-I"

Tema Descripción

Elimine los elementos repetidos en la lista enlazada dada (los elementos en la lista enlazada están ordenados de menor a mayor), de modo que todos los elementos en la lista enlazada aparezcan solo una vez. Por ejemplo:
la
lista enlazada dada es 1→1→2, devuelve 1 → 2.
La lista enlazada dada es 1 → 1 → 2 → 3 → 3, devuelve 1 → 2 → 3.

Rango de datos: la longitud de la lista vinculada satisface 0≤n≤100, y el valor de cualquier nodo en la lista vinculada satisface ∣val∣≤100

Avanzado: complejidad espacial O(1), complejidad temporal O(n)

Ejemplo 1:

Entrada: {1,1,2}

Valor de retorno: {1,2}

Ejemplo 2:

ingresar:{}

valor devuelto:{}

ideas para resolver problemas

Primero, juzgue si la lista enlazada está vacía y devuelva nulo directamente si está vacía. Dado que los elementos en la lista enlazada están en orden, cada vez que se juzga si el contenido del elemento apuntado por el puntero actual y el siguiente el puntero es el mismo, si son iguales, elimine el siguiente nodo y finalmente devuelva la cabeza (porque el puntero p se mueve hacia el final para señalar el final de la lista vinculada, y la cabeza apunta al encabezado de la lista vinculada) .

el código

/*
 * function ListNode(x){
 *   this.val = x;
 *   this.next = null;
 * }
 */

/**
  * 
  * @param head ListNode类 
  * @return ListNode类
  */
function deleteDuplicates( head ) {
    //判断链表是否为空
    if(!head) return null;
    //链表中元素有序,每次判断当前指针和下一指针指向的元素内容是否相同
    let p = head;
    while(p.next) {
        //相同则删除下一元素直到出现新元素
        if(p.val == p.next.val) {
            p.next = p.next.next;
        } else {
            p = p.next;
        }
    }
    return head;
}
module.exports = {
    deleteDuplicates : deleteDuplicates
};

Supongo que te gusta

Origin blog.csdn.net/qq_42101569/article/details/126480954
Recomendado
Clasificación