题目
给你一个链表的头节点 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^4] 内
1 <= Node.val <= 50
0 <= val <= 50
思路
/**
* Definition for singly-linked list.
* function ListNode(val, next) {
* this.val = (val===undefined ? 0 : val)
* this.next = (next===undefined ? null : next)
* }
*/
/**
- 给了我们ListNode函数了,并且函数里有next属性,所以我们要使用上
- 删除元素就是将元素节点的next指向要删除的元素节点的下一个节点
- 因为题目没有给我们提供前一个元素的指向,所以我们就利用节点的next属性,也就是我们删除的目标元素节点是cur.next而不是cur(若是要删除cur,我们需要知道指向它的前一个节点)。删除cur.next就是将cur.next.next赋值给cur.next
var removeElements = function(head, val) {
const ret = new ListNode(0,head)
let cur = ret
while (cur.next){
if (cur.next.val === val){
cur.next = cur.next.next
continue
}
cur = cur.next
}
return ret.next
};