1. 题目描述
给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。
示例 1:
输入:head = [1,2,6,3,4,5,6], val = 6输出:[1,2,3,4,5]
示例 2:
输入:head = [], val = 1输出:[]
示例 3:
输入:head = [7,7,7,7], val = 7输出:[]
提示:
- 列表中的节点在范围
[0, 10]内 1 <= Node.val <= 500 <= k <= 502. 解题思路
对于这道题目,本身是很简单的,就是遍历链表,删除指定的值,但是需要注意,如果是需要删除的值在链表中时,直接删除即可,如果要删除的节点在链表的头部,这就要处理遍历情况,为了避免这种情况,我们可以初始化一个哑结点dummyHead,它是一个空节点,将他放在头结点的前面。这样就不会出现为空的情况。
复杂度分析:
- 时间复杂度:O(n)。其中
n为链表的长度,我们需要遍历整个链表。 -
3. 代码实现
/*** 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) {let dummyHead = new ListNode(0)dummyHead.next = headlet pre = dummyHead, cur = headwhile(cur){cur.val == val ? pre.next = cur.next : pre = curcur = cur.next}return dummyHead.next};
4. 提交结果

