[路飞]_leetcode-面试题 02.02-返回倒数第 k 个节点

139 阅读1分钟

一、题目描述

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

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

示例:

输入: 1->2->3->4->5 和 k = 2
输出: 4

说明:

给定的 k 保证是有效的。

本题解题思路如下:

  1. 定义两个指针 precur,初始都指向 head
  2. cur 指针向后走 k
  3. precur指针一起向后走,直到 cur 指针为空,此时 pre 指针指向的就是倒数第 k 个节点

二、代码实现

var kthToLast = function(head, k) {
    let pre = head,cur = head
    while(k){
        cur = cur.next;
        k--;
    }
    while(cur){
        cur = cur.next;
        pre = pre.next;
    }
    return pre.val;
};

欢迎建议留言讨论