La idea de la implementación del código:
establezca dos punteros (nodo1, nodo2) para que apunten al nodo principal.
El primer puntero toma k-1 pasos (porque la distancia entre el último kth y el último nodo es k-1)
y luego deje que el nodo 1, el nodo 2 avancen al mismo tiempo Vaya hasta que el nodo 1 vaya al último nodo
En este punto, el nodo 2 está exactamente en el k-ésimo nodo desde abajo
/**
* 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 * node1 = head;
ListNode * node2 = head;
int flag = k;
for(;flag>1 ; flag-- ){
node1 = node1->next;
}
for(;node1->next!=nullptr; node1=node1->next){
node2 = node2->next;
}
return node2;
}
};