题解 | #从单向链表中删除指定值的节点#
从单向链表中删除指定值的节点
https://www.nowcoder.com/practice/f96cd47e812842269058d483a11ced4f
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 str; while ((line = await readline())) { str = line; } // 将输入以空格分割为数组 let arrinput = str.split(" "); // 获取要删除的节点元素 let x = arrinput[arrinput.length - 1]; // 获取所有的节点值数组arrnum,slice(),截取的内容前包括,后不包括,即[a,b) let arrnum = arrinput.slice(2, arrinput.length - 1); // console.log(arrnum); // 定义一个新数组arrnumsort,对上面的arrnum每两个为一组进行遍历,进行节点排列 let arrnumsort=[]; for(let i=0;i<arrnum.length;i+=2){ /* 2个节点为一组,分两种情况进行讨论: 1、原数组有第二个节点,那么只需要将第一个节点,放置到原数组这个节点之后 2、原数组无这个节点,那么依次向原数组添加第二个节点、第一个节点即可 */ if(arrnumsort.includes(arrnum[i+1])){ arrnumsort.splice(arrnumsort.indexOf(arrnum[i+1])+1,0,arrnum[i]) }else{ arrnumsort.push(arrnum[i+1]); arrnumsort.push(arrnum[i]); } } // 对排列好的节点数组,按要求删除指定的节点元素 arrnumsort.splice(arrnumsort.indexOf(x),1); console.log(arrnumsort.join(' ')) })();