题目描述
输入一个链表,输出该链表中倒数第k个结点。
思路
两个指针,第一个指针先走k-1步,第二个指针开始走。复杂度O(n).
/*
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((pListHead == NULL) || (k == 0))
return NULL;
ListNode *q = pListHead, *ans = pListHead;
for(int i = 1; i < k; i++)
{
if(q->next)
{
q = q->next;
}
else
return NULL;
}
while(q->next)
{
q = q->next;
ans = ans->next;
}
return ans;
}
};