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
}
相关推荐
Wyc724091 小时前
数据结构1
数据结构
lcj25111 小时前
【数据结构精讲】堆与二叉树从底层原理到代码落地:堆的构建 / 调整 / 排序 + 二叉树遍历 / 操作(附完整 C++ 源码 + LeetCode 题解)
数据结构·c++·leetcode
努力努力再努力wz1 小时前
【MySQL 进阶系列】C/C++ 如何通过客户端库访问 MySQL?从连接原理到 API 调用流程详解(附完整demo代码)
服务器·c语言·数据结构·数据库·c++·b树·mysql
xuhaoyu_cpp_java1 小时前
单调栈(算法)
java·数据结构·经验分享·笔记·学习·算法
xxjj998a2 小时前
PHP vs Go vs Python:三大语言终极对比
python·golang·php
诙_2 小时前
C++数据结构--排序算法
数据结构·算法·排序算法
jieyucx2 小时前
Go 切片核心:子切片详解(下篇)
开发语言·算法·golang·切片
许彰午2 小时前
02-手写链表、栈、队列——不依赖任何集合框架
数据结构·链表·面试
MegaDataFlowers2 小时前
141.环形链表
数据结构·链表
JAVA面经实录91711 小时前
计算机基础(完整版·超详细可背诵)
java·linux·数据结构·算法