# 面试题 02.02. 返回倒数第 k 个节点

# 题目

难度 ⭐

原题 (opens new window)

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

示例:

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

说明:给定的 k 保证是有效的。

#

  • 解法一:先遍历放入数组,再返回数组倒数第 k 个元素。
/**
 * Definition for singly-linked list.
 * function ListNode(val) {
 *     this.val = val;
 *     this.next = null;
 * }
 */
/**
 * @param {ListNode} head
 * @param {number} k
 * @return {number}
 */
var kthToLast = function(head, k) {
    var arr = []
    while(head){
        arr.push(head.val);
        head = head.next
    }
    return arr[arr.length-k]
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
  • 解法二:先遍历获取总长度,再遍历到倒数第 k 个元素。
var kthToLast = function(head, k) {
    for (var len = 0, p = head; p != null; p = p.next, len++);
    for (let i = 0; i < len - k; head = head.next, i++);
    return head.val;
};
1
2
3
4
5
上次更新: 4/30/2021, 1:45:23 PM