第14题 链表中倒数第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 (!pListHead || k <= 0) return nullptr;
ListNode* fast = pListHead;
int n =0;
while(fast){
fast = fast->next;
++n;
}
if(n<k) return nullptr;
n = n-k;
while(n--){
pListHead = pListHead->next;
}
return pListHead;
}
};
思路:
快慢指针抽象版,将指针遍历至链表底部,得到链表长度计数,若小于k返回nullptr,否则遍历到第n-k+1个链表节点处停止
本文介绍了一种使用快慢指针的方法来解决链表中查找倒数第k个节点的问题。通过先遍历链表获取其长度,然后根据k的值定位目标节点,避免了不必要的遍历,提高了效率。

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



