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

#链表#
全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务