「每日LeetCode」2020年12月5日

本文最后更新于:2023年3月19日 晚上

面试题 02.02. 返回倒数第 k 个节点,快慢指针

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

实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。
注意:本题相对原题稍作改动
示例:

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

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

思路

快慢指针,快指针先移动,当计数到 k 时,慢指针移动,当快指针到链表尾部时,慢指针正指向倒数第 k 个节点

解答

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/**
* 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) {
let slow = head,
fast = head,
count = 0;
while (fast) {
count++;
fast = fast.next;
if (count >= k && fast) slow = slow.next;
}
return slow.val;
};