剑指offer:链表中倒数第k个结点
class Solution{
public:
ListNode* FindKthToTail(ListNode* pListHead, unsigned int k){
ListNode* slowNode = pListHead;
while(k!=0){
k--;
if(pListHead != nullptr) pListHead = pListHead-> next;
else
return nullptr;
}
while(pListHead != nullptr){
slowNode = slowNode -> next;
pListHead = pListHead -> next;
}
return slowNode;
}
};
整体思路:首先让快指针先行k步,然后让快慢指针每次同行一步,直到快指针指向空节点,慢指针就是倒数第K个节点
首先定义两个指针,快和慢。k循环到零,同时快指针往前走k长,在来个循环,当链表不为空时,快指针和慢指针一起往前走,快指针走到头的时候就跳出循环,此时慢指针所在的位置就是要求的倒数第K个结点!!!
#剑指offer#
