刷题-力扣-面试题 02.02. 返回倒数第 k 个节点
题目链接
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/kth-node-from-end-of-list-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
题目描述
实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。
注意:本题相对原题稍作改动
示例:
输入: 1->2->3->4->5 和 k = 2
输出: 4
说明:
给定的 k 保证是有效的。
题目分析
- 根据题目描述,获取倒数第k个节点元素
- 双指针,两个指针在链表头开始,一个指针先走k步,然后两个指针同时走
- 当快指针走到链表尾后,慢指针所指的就是倒数第k个节点
代码
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
int kthToLast(ListNode* head, int k) {
ListNode* front = head;
ListNode* rear = head;
while (--k) {
front = front->next;
}
while (front->next) {
front = front->next;
rear = rear->next;
}
return rear->val;
}
};