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
}
相关推荐
一叶之秋14121 小时前
从零开始:打造属于你的链式二叉树
数据结构·算法
yuuki2332335 小时前
【数据结构】栈
c语言·数据结构·后端
q***710812 小时前
【Golang】——Gin 框架中的表单处理与数据绑定
microsoft·golang·gin
苏小瀚12 小时前
算法---FloodFill算法和记忆化搜索算法
数据结构·算法·leetcode
苏小瀚12 小时前
算法---二叉树的深搜和回溯
数据结构·算法
R-G-B15 小时前
归并排序 (BM20 数组中的逆序对)
数据结构·算法·排序算法
少许极端15 小时前
算法奇妙屋(十二)-优先级队列(堆)
数据结构·算法·leetcode·优先级队列··图解算法
kupeThinkPoem16 小时前
哈希表有哪些算法?
数据结构·算法
爬山算法17 小时前
Redis(127)Redis的内部数据结构是什么?
数据结构·数据库·redis
q***728718 小时前
Golang 构建学习
开发语言·学习·golang