题目
实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。
注意: 本题相对原题稍作改动
示例:
输入: 1->2->3->4->5 和 k = 2
输出: 4
解题思路
本题比较简单,设计双指针pre,curr;让pre指针先走k位,然后pre和curr一起走,当pre为空时,表示到了尾节点,此时curr指针指向的节点即为倒数第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) {
// 利用双指针的特性
let pre = head, curr = head;
// 记录pre指针走过的节点数
let i = 0;
// pre节点为空时停止循环
while(pre) {
// i >= k 表示pre节点已经走过k个节点了,此时curr节点与pre节点一起走
if (i>=k) {
curr = curr.next;
}
pre = pre.next;
i++;
}
// 最后返回curr节点的值
return curr.val;
};