203. 移除链表元素

203. 移除链表元素

给你一个链表的头节点 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, 104

1 <= Node.val <= 50

0 <= val <= 50


单链表,构建虚拟头结点,因为Golang已经提供了GC机制,所以无需手动删除。

需要注意的就是不能直接拿head遍历,不然最后找不到head的位置了。

go 复制代码
type ListNode struct {
	Val  int
	Next *ListNode
}

// 构建虚拟头结点
func removeElements(head *ListNode, val int) *ListNode {
	dummyhead := &ListNode{0, head}
	cur := dummyhead
	for cur.Next != nil {
		if cur.Next.Val == val {
			cur.Next = cur.Next.Next
		} else {
			cur = cur.Next
		}
	}
	return dummyhead.Next
}
相关推荐
努力努力再努力wz几秒前
【C++高阶数据结构系列】:跳表 SkipList 详解:多层索引、随机晋升与C++ 完整实现(附跳表实现的源码)
开发语言·数据结构·数据库·c++·redis·缓存·skiplist
代码中介商20 分钟前
图论入门:从基础到遍历算法
数据结构·算法·图论
飞天狗11129 分钟前
2024第十五届蓝桥杯c/c++B组国赛题解
c语言·数据结构·c++·算法·蓝桥杯
木雷坞7 小时前
Go 项目实战:用 MLiev IAM 落地企业认证中心
后端·golang·认证
2401_872418789 小时前
算法入门:数据结构-堆
数据结构·算法
不会就选b13 小时前
数据结构之顺序表和链表的OJ题(上)
数据结构·链表
啦啦啦啦啦zzzz16 小时前
数据结构:二叉树的线索化
数据结构·算法
如竟没有火炬17 小时前
寻找峰值——二分
java·开发语言·数据结构·python·算法·散列表
知彼解己18 小时前
LLM-based Planning:从后端视角理解 Agent 规划层
后端·golang·ai编程
he___H19 小时前
B、B+树和vue部分知识
数据结构·vue.js·b树