203. 移除链表元素

LeetCode 原题链接 image.png

实现思路

  • 用一个 dummy 节点指向 head,这样可以方便地处理删除头节点的情况。
  • 定义一个指针 cur 从 dummy 开始遍历链表,检查 cur.next 的值是否等于 val。
  • 如果 cur.next.val 等于 val,则将 cur.next 指向 cur.next.next,跳过当前节点。
  • 如果不等于 val,则将 cur 向后移动一位,继续检查下一个节点。
  • 最后返回 dummy.next,即新的链表头节点。

代码实现

var removeElements = function (head, val) {
  let dummy = new ListNode(0, head);
  let cur = dummy;
  while (cur.next !== null) {
    if (cur.next.val === val) {
      cur.next = cur.next.next;
      continue;
    }
    cur = cur.next;
  }
  return dummy.next;
};