题解 | #从单向链表中删除指定值的节点#
从单向链表中删除指定值的节点
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
// }

查看7道真题和解析