题解 | #输出单向链表中倒数第k个结点#
输出单向链表中倒数第k个结点
https://www.nowcoder.com/practice/54404a78aec1435a81150f15f899417d
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;
// 方法一:不讲武德版本
void (async function () {
while ((n = parseInt(await readline()))) {
const list = (await readline()).split(" ").map(Number); //链表的值
const k = parseInt(await readline()); //k,即倒数第k个的k
console.log(list[n - k]);
}
})();
// 方法二:按题意来做
void (async function () {
while ((n = parseInt(await readline()))) {
// 输入
const list = (await readline()).split(" ").map(Number); //链表的值
let k = parseInt(await readline()); //k,即倒数第k个的k
// 构造链表
const ListNode = (value,next = null) => ({value,next});
const head = ListNode(list.shift());
let node = head;
while(list.length){
node.next = ListNode(list.shift());
node = node.next;
}
// 求倒数第k个节点的值,快慢指针
let slow = head,fast = head;
while(k--) fast = fast.next;
while(fast){
slow = slow.next;
fast = fast.next;
}
console.log(slow.value);
}
})();
查看9道真题和解析