Likou 206 lista enlazada inversa (iteración + recursión)

TOC] (escriba el título de la tabla de contenido aquí)

1. Título

Inserte la descripción de la imagen aquí

2. Mis pensamientos y problemas iniciales

El problema requiere soluciones iterativas y recursivas.
El método iterativo es simple y directo.
No pensé en la recursividad. Sabía que había una solución recursiva y no tuve ni idea por un tiempo. Mira la solución para entender.

3. Método uno de resolución de problemas: iteración

class Solution {
    
    
    public ListNode reverseList(ListNode head) {
    
    
        ListNode prev = null;
        ListNode temp = head;

        while(temp != null){
    
    
            ListNode nextTemp =temp.next;
            temp.next = prev;
            prev = temp;
            temp = nextTemp;
        }
        return prev;
    }
}

Inserte la descripción de la imagen aquí

4. Método de resolución de problemas 2: recursividad

class Solution {
    
    
    public ListNode reverseList(ListNode head) {
    
    
        //1.求解基本问题
        if(head == null || head.next == null){
    
    
            return head;
        }
        //2.将大问题如何变成小问题
        ListNode temp = reverseList(head.next);
        //3.小问题的解如何变成大问题的解
        head.next.next = head;
        head.next = null;
        return temp;
    }
}

Los dos primeros pasos se pueden escribir aquí. El tercer paso es un poco incomprensible al principio. Por ejemplo, si se va a invertir 3-> 4, entonces head.next.next = head; realización 4 apunta a 3, head. siguiente = nulo; realización 3 Apunte a nulo. Practica esto de nuevo más tarde.
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/ambitionLlll/article/details/113922043
Recomendado
Clasificación