题解 | #输出单向链表中倒数第k个结点#

输出单向链表中倒数第k个结点

https://www.nowcoder.com/practice/54404a78aec1435a81150f15f899417d

const readline = require("readline");

const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout,
});
// 给ts的可怜娃一个标准答题思路。垃圾牛客 参数输入获取简直巨坑!!!!!!
class LinkList {
    value: number;
    next: LinkList;
    constructor(arr: number[]) {
        let node = null;
        let current = null;
        for (let val of arr) {
            const cur = {
                value: val,
                next: null,
            };
            if (node) {
                current.next = cur;
                current = current.next;
            } else {
                node = cur;
                current = node;
            }
        }
        this.value = node.value;
        this.next = node.next;
    }
}
const linesAll = [];
rl.on("line", function (line) {
    linesAll.push(line);
});

rl.on("close", function () {
    const len = linesAll.length
    for (let x = 0; x < len; x = x + 3) {
        const lines = linesAll.splice(0, 3);
        // console.log(lines);
        const node = new LinkList(lines[1].split(" ").map((i) => Number(i)));
        const k = lines[2];
        let link1 = node;
        let link2 = node;
        let i = 0;
		// 核心思路,找另一个链表先移动k次,这样两个链表同时到达终点的时候,长链表一定到达k的位置
        while (i < k) {
            link1 = link1.next;
            i++;
        }
        while (link1 && link2) {
            link1 = link1.next;
            link2 = link2.next;
        }
        console.log(link2.value);
    }
});

全部评论

相关推荐

07-22 13:50
门头沟学院 Java
仁者伍敌:其实能找到就很好了,当然收支能抵
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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