题解 | #从单向链表中删除指定值的节点#

从单向链表中删除指定值的节点

https://www.nowcoder.com/practice/f96cd47e812842269058d483a11ced4f

const readline = require('readline');

const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});
rl.on('line', function (line) {
    // 将一行的输入值作为一个number 数组
    const nums = line.split(' ').map(Number)
    const len = nums.length
    // 定义一个保存链表值的数组
    let res = []
    // 要刪除的节点值
    const removeVal = nums[len-1]

    // 每隔两个操作一下, 得到位置,及其值
    for(let i = 1; i < nums.length - 1; i += 2){
        // 头结点值直接放进数组
        if(i === 1){
            res.push(nums[i])
            continue
        }else if(i > 1 && i < nums.length - 1){
            // 找到对应的值的下标
            const index = res.findIndex(v=>v === nums[i])
            // 在这个值的后面插入值
            res.splice(index + 1, 0, nums[i-1])
        }
    }

    // 根据得到数组组件链表、节点做法,没给出链表相关的东西,直接用数组做
    // res = res.filter(v=>v != removeVal)
    // const head = new MyNodeList(null, res[0])
    // const cur = head
    // for(let i = 1; i < res.length; i++){
    //     const node = new MyNodeList(null, res[i])
    //     node.next = cur.next
    //     cur.next = node
    // } 

    console.log(res.filter(v=>v != removeVal).join(' '))
    
});

// function MyNodeList(next, val){
//     this.next = next ? next : null
//     this.val = val ? val : null
// }

全部评论

相关推荐

明明就不饿:看不懂你到底会啥,什么岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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