1. 题目描述
力扣在线OJ_——面试题 02.02. 返回倒数第 k 个节点
输入一个链表,输出该链表中倒数第k个结点
实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。
示例:
输入: 1->2->3->4->5 和 k = 2
输出: 4
2. 思路
两个思路
3. 代码实现
fast走k-1步
int kthToLast(struct ListNode* head, int k) {
struct ListNode* fast ,*slow;
fast = slow = head;
if(head == NULL)
{
return -1;
}
int i = 0;
for(i =0 ;i <k-1;i ++)
{
fast = fast->next;
}
while(fast->next)
{
slow = slow->next;
fast = fast->next;
}
return slow->val;
}
fast走K步
int kthToLast(struct ListNode* head, int k) {
if(head == NULL)
{
return -1;
}
struct ListNode* slow ,*fast;
slow = head;
fast = head;
while(k--)
{
if(fast == NULL)
{
return -1;
}
fast = fast->next;
}
while(fast)
{
slow = slow->next;
fast = fast->next;
}
return slow->val;
}