给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。
示例 1:
输入:head = [1,2,6,3,4,5,6], val = 6输出:[1,2,3,4,5]
题解
添加一个哨兵节点,即在最开始的节点外独立添加一个node节点,指向头结点,然后使用前后指针不断往后查找,找到相同的就删除即可,最后返回哨兵节点的next节点
/*** Definition for singly-linked list.* function ListNode(val, next) {* this.val = (val===undefined ? 0 : val)* this.next = (next===undefined ? null : next)* }*//*** @param {ListNode} head* @param {number} val* @return {ListNode}*/var removeElements = function(head, val) {const sentinel = new ListNode(0, head);let prev = sentinel;let curr = head;while (curr) {if (curr.val == val) {prev.next = curr.next} else {prev = curr}curr = curr.next}return sentinel.next};
