题解 | #输出单向链表中倒数第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 () { // Write your code here let arr = []; let count = 0; while ((line = await readline())) { arr.push(line); count++; if (count % 3 == 0) { printVal(arr[1], Number(arr[0]), Number(arr[2])); arr = []; count = 0; } } })(); var printVal = function (valsStr ,n , k) { // 如果跳过链表的方式去实现非常简答,但是不符合题目要求 // let valsArr = valsStr.split(' '); // console.log(valsArr[valsArr.length - k]); // return; //1、生成链表 let arr = valsStr.split(" "); let nodeHead; // 先创建尾部节点,并当做链表第一项 nodeHead = new ListNode(arr[arr.length - 1], null); // 创建链表其余部分 for (let i = arr.length - 2; i >= 0; i--) { nodeHead = new ListNode(arr[i], nodeHead); } //2、计算出我们要输出的节点在链表的哪一项,此时第一项记作0 (0 = 8 - 8) let count = n - k; let node = nodeHead; while(count > 0) { node = node.next; count--; } console.log(node.data); }; //链表结构 class ListNode { constructor(key, next) { this.data = key; this.next = next; } }#链表#