目录
题目
图解
代码
面试题 02.02. 返回倒数第 k 个节点 - 力扣(LeetCode)https://leetcode.cn/problems/kth-node-from-end-of-list-lcci/description/
题目
实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。
注意:本题相对原题稍作改动
示例:
输入: 1->2->3->4->5 和 k = 2 输出: 4
说明:
给定的 k 保证是有效的。
图解
最终我们的tail就走到这个节点
代码
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
typedef struct ListNode ListNode;
int kthToLast(struct ListNode* head, int k) {
// 快慢指针,先让快指针走k步,然后再和慢指针同时走
ListNode *fast = head, *tail = head;
//让快指针走k步
while(k--){
fast = fast->next;
}
//同时走
while(fast){
fast = fast->next;
tail = tail->next;
}
return tail->val;
}