题目描述:
输入一个链表,输出该链表中倒数第k个结点。
示例:
本题在考虑效率的情况下,采用两个指针来遍历,快指针先前进k,然后两个同步前面,直到快指针走到了尾部停下来,然后返回慢指针。
代码如下:
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
if(k == 0 or pListHead == nullptr)return nullptr;
ListNode* r = pListHead;
int t = 0;
while(t < k)
{
t++;
r = r->next;
if(r == nullptr and t < k)return nullptr;
}
while(r != nullptr)
{
r=r->next;
pListHead=pListHead->next;
}
return pListHead;
}
};