Sword se refiere a Offer22, el k-ésimo nodo desde la parte inferior de la lista vinculada-fácil

Enlace de pregunta

Descripción del Título:

Ingrese una lista vinculada y genere el k-ésimo nodo de 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 tercer nodo de la parte inferior de esta lista vinculada es el nodo con el valor 4.

Caso de prueba:

给定一个链表: 1->2->3->4->5, 和 k = 2.
返回链表 4->5.

Ideas de resolución de problemas:

  1. Puntero doble, inicializa dos punteros, forma y cola apuntan a la cabeza.
  2. La forma del puntero frontal avanza k pasos primero.
  3. Luego, los dos punteros se mueven hacia atrás al mismo tiempo, hasta que el formulario pasa el nodo final (es decir, nulo)
  4. Volver a la cola

Manifestación:

1. Tanto la forma como la cola apuntan a 1.
Inserte la descripción de la imagen aquí
2. La forma se mueve primero 2 pasos, y la forma apunta a 3. 3. La
Inserte la descripción de la imagen aquí
forma y la cola se mueven hacia atrás al mismo tiempo hasta que la forma apunta a nulo, y luego la cola es regresó.
Inserte la descripción de la imagen aquí

Código de CA (c ++)

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
    
    
public:
    ListNode* getKthFromEnd(ListNode* head, int k) {
    
    
        ListNode * form = head;
        ListNode * tail = head;
        while(k--)
        {
    
    
            tail = tail->next;
        }
        while(tail){
    
    
            tail = tail->next;
            form = form->next;
        }
        return form;

    }
};

Supongo que te gusta

Origin blog.csdn.net/Yang_1998/article/details/113041168
Recomendado
Clasificación