Leikou 19 Elimina el nodo N de la parte inferior de la lista vinculada (define un nodo ficticio)

1. Título

Inserte la descripción de la imagen aquí

2. Mis pensamientos y problemas iniciales

Esta pregunta es muy reflexiva, defina directamente un nodo ficticio, después de obtener la longitud de la lista vinculada, use un bucle for para obtener el nodo anterior del nodo a eliminar y luego temp2.next = temp2.next.next;complete la eliminación.

3. Método de resolución de problemas 1: Defina un nodo ficticio:

class Solution {
    
    
    public ListNode removeNthFromEnd(ListNode head, int n) {
    
    
        ListNode temp = head;
        int length = 0;
        //定义一个虚拟节点
        ListNode virtus = new ListNode(0 ,head);
        ListNode temp2 = virtus;

        //遍历链表,获取链表长度
        while(temp != null){
    
    
            length++;
            temp = temp.next;
        }

        //获取被删除节点的前一个节点
        for(int i = 0;i< length - n;i++){
    
    
                temp2 = temp2.next;
            }
            temp2.next = temp2.next.next;

        return virtus.next;
    }
}

Este es el código que escribí directamente. Nota
(1) La declaración que define el nodo virtual :, el ListNode virtus = new ListNode(0 ,head);primer parámetro se establece en 0, porque val es un tipo int, y no presté atención a escribir "" al principio .
(2) Preste atención al último retorno virtus.next; el retorno no es temp2, temp2 se usa como nodo auxiliar para cambiar el nodo en la lista enlazada original, y el nodo virtual virtus es siempre el mismo. Después del siguiente, puede obtener la lista vinculada modificada.
Inserte la descripción de la imagen aquí

Supongo que te gusta

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