题目:
实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。
注意:本题相对原题稍作改动
示例:
输入: 1->2->3->4->5 和 k = 2
输出: 4
说明:
给定的 k 保证是有效的。
来源:力扣(LeetCode)
/**
* Definition for singly-linked list.
* class ListNode {
* val: number
* next: ListNode | null
* constructor(val?: number, next?: ListNode | null) {
* this.val = (val===undefined ? 0 : val)
* this.next = (next===undefined ? null : next)
* }
* }
*/
function kthToLast(head: ListNode | null, k: number): number {
let fast = head;
let slow = head;
let n = 0;
while (fast) {
fast = fast.next;
if (n >= k) {
slow = slow.next;
}
n++;
}
return slow.val;
};
当快指针fast走的时候,计数n++, 直到快慢指针slow之间的偏移量达到了k,慢指针开始移动。当快指针遍历完的同时,慢指针刚好就是倒数k个值。