文章目录
1. 题目介绍
链接: link
给我们一个单链表,返回其中倒数第K个结点的值。
2. 思路分析——快慢指针
可以画个图带大家看一下:
两种方法都差不多,我们来写一下代码
3. 代码实现
fast先走K步:
int kthToLast(struct ListNode* head, int k){
struct ListNode* slow=head;
struct ListNode* fast=head;
while(k--)
{
fast=fast->next;
}
while(fast)
{
fast=fast->next;
slow=slow->next;
}
return slow->val;
}
如果fast先走K-1步:
int kthToLast(struct ListNode* head, int k){
struct ListNode* slow=head;
struct ListNode* fast=head;
while(--k)
{
fast=fast->next;
}
while(fast->next)
{
fast=fast->next;
slow=slow->next;
}
return slow->val;
}
当然还想给大家提一点就是: