* 链表中倒数最后k个结点
* 思路:选2个节点,第一个节点走了k-1, 第二个节点才与第一个节点一起走,当第一个节点走到尾节点,第二个节点走到
* 倒数第k个节点。
ListNode* FindKthToTail(ListNode* pHead, int k) {
if (pHead == nullptr) {
return nullptr;
}
ListNode *pFirstNode = pHead;
// 慢指针与快指针距离为K
ListNode *pSecondNode = pHead;
for(int i = 0; i < k; i++) {
if(pFirstNode != nullptr) {
pFirstNode = pFirstNode->next;
} else {
return nullptr;
}
}
// 快指针继续向后运动直到结尾
while(pFirstNode != nullptr){
pFirstNode = pFirstNode->next;
pSecondNode = pSecondNode->next;
}
return pSecondNode;
}