Leetcode206. Reversa lista

título Descripción

Revertir una lista enlazada.

Ejemplo:

Entrada: 1-> 2-> 3-> 4- > 5-> NULL
salida: 5-> 4-> 3-> 2- > 1-> NULL

Descripción:

Se puede resolver esta cuestión de dos maneras?

solución del problema

Lista de títulos clásico, es métodos recursivos o iterativos.

método iterativo (Java)

Ideas: De hecho, la idea no es muy complicado, pero la narrativa un poco de problemas, se puede ver en este ejemplo será un poco más claro.

En pocas palabras, un nuevo resumen, a continuación de la lista original, una división, una posición invertida.

public ListNode reverseList(ListNode head) {
    ListNode prev = null;
    ListNode curr = head;
    while (curr != null) {
        ListNode nextTemp = curr.next;
        curr.next = prev;
        prev = curr;
        curr = nextTemp;
    }
    return prev;
}

Análisis de la complejidad

  • complejidad Tiempo: O (n), suponiendo n es la longitud de la lista.
  • la complejidad de las instalaciones: O (1)

La recursión (Java)

Ideas: El método iterativo con respecto a, de hecho, lo primero que van a ser un poco ignorante. La idea es utilizar el pensamiento recursivo, después parte de la lista están asumiendo ningún problema, se ha invertido mejor. (Debido a que en la parte posterior de una función recursiva), sólo para hacer el proceso del nodo actual. Deje que el anti-nodo se refiere a.

public ListNode reverseList(ListNode head) {
    if (head == null || head.next == null) return head;
    ListNode p = reverseList(head.next);
    head.next.next = head;
    head.next = null;
    return p;
}
  • complejidad Tiempo: O (n)
  • Espacio complejidad: O (n), el uso de la recursión, utilice espacio de pila implícita.
Publicado 43 artículos originales · alabanza ganado 20 · vistas 1458

Supongo que te gusta

Origin blog.csdn.net/Chen_2018k/article/details/104475428
Recomendado
Clasificación