描述
输入一个链表,输出该链表中倒数第k个结点。
示例1
输入:
1,{1,2,3,4,5}
复制返回值:
{5}
看代码
struct ListNode* FindKthToTail(struct ListNode* pListHead, int k ) {
struct ListNode* fast = pListHead, *slow = pListHead;
while(k--)
{
if(fast == NULL)
return NULL;
fast = fast->next;
}
while(fast)
{
fast = fast->next;
slow = slow->next;
}
return slow;
}
快慢指针的用法,
比如:
在下面这个链表中,你想找到倒数第k个节点,我们假设k=2,倒数第二个节点那就是节点6
你可以用两个指针,一个快指针fast, 一个慢指针slow
然后让快指针先走k步,(这里就是先走2步),快指针到达目的位置后,让快慢指针一起走,
当快指针到达终点之后指向NULL时,慢指针所在的位置就是倒数第K个节点的位置、