原文:203. 移除链表元素(leetcode 解题) - 每天一个JavaScript小知识@Js中文网 · 码农进阶题库

原文地址:https://www.javascriptc.com/interview-tips/zh_cn/leetcode/leetcode-javascript-solution-0203/

题目:

难度:Easy

相关话题:链表

删除链表中等于给定值val 的所有节点。

示例:

输入: 1->2->6->3->4->5->6, **val** = 6
输出: 1->2->3->4->5

思路:

只需要时刻跟踪当前node和当前node的上一个节点lastNode

遇到node.val===val,那么就改变lastNode.nextnode.next

/**
 * @来源: Javascript中文网 - 前端进阶资源教程 https://www.javascriptc.com/
 * @介绍:一个致力于帮助开发者用代码改变世界为使命的平台,每天都可以在这里找到技术世界的头条内容
 * Definition for singly-linked list.
 * function ListNode(val) {
 *     this.val = val;
 *     this.next = null;
 * }
 */
/**
 * @param {ListNode} head
 * @param {number} val
 * @return {ListNode}
 */
var removeElements = function(head, val) {
  let root=new ListNode(null)
  root.next=head
  let lastNode=root,node=head
  while(lastNode){
    if(node && node.val===val){
      let nxt=node.next
      lastNode.next=nxt
      node=nxt
    }else{
      if(node)node=node.next
      lastNode=lastNode.next
    }
  }
  return root.next
};

扩展阅读: