题解 | #链表中倒数最后k个结点#
链表中倒数最后k个结点
http://www.nowcoder.com/practice/886370fe658f41b498d40fb34ae76ff9
* 链表中倒数最后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;
}
查看1道真题和解析