题解 | #输出单向链表中倒数第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); } })();