问题
输入一个链表,输出该链表中倒数第k个结点。
思绪
简朴思绪: 轮回到链表末端找到 length 在找到length-k节点 须要轮回两次。
优化:设定两个节点,间距相差k个节点,当前面的节点抵达尽头,取背面的节点。
前面的节点抵达k后,背面的节点才动身。
本问题偏重考核代码鲁棒性、容错率: 须要斟酌head为null,k为0,k大于链表长度的状况
代码
function FindKthToTail(head, k) {
if (!head || !k) return null;
let front = head;
let behind = head;
let index = 1;
while (front.next) {
index++;
front = front.next;
if (index > k) {
behind = behind.next;
}
}
return (k <= index) && behind;
}