【路飞】算法与数据结构-面试题 02.02. 返回倒数第 k 个节点

175 阅读1分钟

LeetCode:地址

题目要求

实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。

注意: 本题相对原题稍作改动

示例 1:

输入: 1->2->3->4->5 和 k = 2
输出: 4
思路
  1. 快指针先走k
  2. 再一起走,直到快指针走到头
  3. 此时的慢指针指的就是倒数第k
代码
const kthToLast = (head, k) => {
    let [fast, slow] = [head, head];
    while (k--) {
        // 快指针先走k步
        fast = fast.next;
    }
    while (fast) {
        // 再一起走,直到快指针走到头
        fast = fast.next;
        slow = slow.next;
    }
    // 此时的慢指针指的就是倒数第k个
    return slow.val;
};