本题使用递归的方式,计算出每个节点是倒数的第几个节点,在递归的方法中,当指定的目标节点位置出现时,使用指针变量存储目标节点。
下面是用C++语言实现的代码。
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
int kthToLast(ListNode* head, int k) {
ListNode result(0);
searchLast(&result, head, k);
return result.next ? result.next->val : head->val;
}
int searchLast(ListNode* result, ListNode* curr, int k) {
if (curr->next == nullptr) {
return 1;
}
curr = curr->next;
int num = searchLast(result, curr, k);
if (k == num) {
result->next = curr;
}
return num + 1;
}
};