Pregunta 22 de la entrevista "Leetcode". El k-ésimo nodo de la parte inferior de la lista vinculada

Descripción del título
Ingrese una lista vinculada y genere el k-ésimo nodo desde la parte inferior de la lista vinculada. Para ajustarse a los hábitos de la mayoría de las personas, esta pregunta comienza a contar desde 1, es decir, el nodo final de la lista vinculada es el primer nodo desde abajo. Por ejemplo, una lista vinculada tiene 6 nodos. A partir del nodo principal, sus valores son 1, 2, 3, 4, 5 y 6. El penúltimo nodo de esta lista vinculada es el nodo con un valor de 4.

Ejemplo:

Dada una lista vinculada: 1-> 2-> 3-> 4-> 5, y k = 2.
Regrese a la lista vinculada 4-> 5.

Lenguaje : análisis del pensamiento en lenguaje C

  • Dado un puntero cur, recorra la lista vinculada para obtener el número de nodos en la suma de la lista vinculada
  • Vuelva a apuntar cur al primer nodo que sea cur = head, y luego deje que cur vuelva al paso sum-k + 1 para encontrar el k-ésimo nodo desde la parte inferior en la lista vinculada
  • Finalmente regresa a cur

Código

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */

typedef struct ListNode Node;
struct ListNode* getKthFromEnd(struct ListNode* head, int k){
    Node* cur=head;
    int sum=0;
    while(cur->next)
    {
        cur=cur->next;
        sum++;
    }
    cur=head;
    for(int i=0;i<sum-k+1;i++)
    {
        cur=cur->next;
    }

    return cur;
}

resultado de la operación
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/NanlinW/article/details/104798310
Recomendado
Clasificación