//参考了剑指offer中记载的快慢指针法。快指针提前走k-1步。快指针抵达终点时慢指针就能到倒数第k个节点处了。例:1->2。求倒数第1个节点。提前走0步。快慢指针一起到最后一个节点。
class Solution {
public:
ListNode* FindKthToTail(ListNode* pHead, int k) {
if(pHead==nullptr || k<=0)
return nullptr;
int times=k-1;
ListNode* fast=pHead;
ListNode* slow=pHead;
for (int i=k-1; i>0; i--) {
if(fast->next==nullptr)
{
return nullptr;
}else {
fast=fast->next;
}
}
while (fast->next!=nullptr) {
fast=fast->next;
slow=slow->next;
}
return slow;
}
};

京公网安备 11010502036488号