TOC] (escriba el título de la tabla de contenido aquí)
1. Título
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;
}
}
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.