T19 de las preguntas de cepillado de LeetCode elimina el nodo N de la parte inferior de la lista vinculada (medio)

El tema de esta vez es que el T19 de LeetCode elimine el nodo N de la parte inferior de la lista vinculada (medio), no hay mucho que decir, el siguiente tema:
Inserte la descripción de la imagen aquí
la definición del nodo de la lista vinculada:

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */

Este es un problema relativamente simple, siempre que comprenda la estructura de datos de la lista vinculada, puede pensar en una solución.
Idea de resolución de problemas: configure para recorrer primero la lista vinculada para obtener la longitud de la lista vinculada y luego modificar la lista vinculada. Como se muestra a continuación:
Inserte la descripción de la imagen aquí
podemos ver que si queremos eliminar el penúltimo, entonces necesitamos modificar el siguiente del nodo cuyo índice es sum-n-1, dejemos node.next = node.next.next;
luego Abajo el código:

class Solution {
    public ListNode removeNthFromEnd(ListNode head, int n) {
        //判空操作
        if(head==null||head.next==null)
        return null;
        //定义两个指针,point用来操作链表,gethead用来表示对头结点的引用
        ListNode point=head;
        ListNode gethead=head;
        int sum=0;//用来计算链表长度
        //计算长度
        while(head!=null){
            sum++;
            head=head.next;
        }

        int index=0; //计算当前遍历到第几个
 
        //排除特殊情况,当sum=n的时候!
        if(sum-n-1<0){
            return gethead.next;
        }
         
         //通过point指针对链表进行操作
        for(int i=0;i<sum;i++){
            if(index==sum-n-1){
                //修改next 达到删除的目的
                point.next=point.next.next;
                break;
            }
            index++;
            point=point.next;
        }
        return gethead;
    }
}

El código es como el anterior, ¡hay dos puntos a tener en cuenta!
Uno: Recuerda realizar la operación de vaciado.
Dos: cuando el valor de sum yn son iguales, es decir, la longitud de la lista enlazada y borra el n-ésimo de la parte inferior, cuando estos dos valores son iguales, sum-n-1 será menor que 0, por lo que la siguiente operación de modificación no se realizará y debe discutirse por separado !
Lo anterior es la explicación de este tema. Si hay algo mal, puedes señalarlo, ¡gracias!

Supongo que te gusta

Origin blog.csdn.net/Pzzzz_wwy/article/details/105670943
Recomendado
Clasificación