输入一个链表,输出该链表中倒数第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) {
ListNode* fast = pListHead;
ListNode* low = pListHead;
while(k > 0){
if(fast == NULL){
return NULL; //防止越界错误!!!要加
}
fast = fast->next;
k--;
}
while(fast != NULL){
fast = fast->next;
low = low->next;
}
return low;
}
};
本文介绍了一种使用快慢指针技巧找到链表中倒数第K个节点的有效算法。通过设置两个指针,先让快指针前进K步,然后同时移动两个指针,当快指针到达链表尾部时,慢指针正好指向倒数第K个节点。
137

被折叠的 条评论
为什么被折叠?



