力扣链表基础之移除链表元素

题目:给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点

找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。

示例

1
2
输入:head = [1,2,6,3,4,5,6], val = 6
输出:[1,2,3,4,5]

思路

添加一个虚拟头节点,这样原链表的所有节点都可以按照统一的方式进行移除了。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
type ListNode struct {
Val int
Next *ListNode
}
func removeElements(head *ListNode, val int) *ListNode {
dummy := &ListNode{}
dummy.Next = head
node := dummy
for node.Next != nil {
if node.Next.Val == val{
node.Next = node.Next.Next
} else {
node = node.Next
}
}
return dummy.Next
}