LeetCode 0203.移除链表元素【Go】

简介: LeetCode 0203.移除链表元素【Go】

移除链表元素

LeetCode203. 移除链表元素

题目描述

给你一个链表的头节点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
输出:[]

思路

题目要求

  • 给定一个链表的头节点和一个目标元素,要求删除链表中与目标元素相同的节点
  • 要求返回删除目标元素后的链表的头节点

由题意可知此题为单链表,单链表只能指向下一个元素,移除操作只需要让节点的next的指针指向下下一个节点。

注意

  • 若要移除头节点,操作与其他节点不一样,因为移除节点是通过要移除的元素的前一个节点来移除节点,而头节点前没有节点,所以需要单独写一个移除操作。为了使头节点的移除操作与其他节点保持一致,我们可以在头节点前再添加一个结点,该节点数据域为空,指针域指向头节点。
  • 链表有三种:单链表(数据域+指针域)、循环链表(数据域+指针域)、双链表(指针域+数据域+指针域)
  • 为了防止头节点为空,产生编译错误,所以应在循坏判断条件中判断当前节点的下一个节点是否非空
  • 最后返回的是第一个存储元素的节点,即return dummyHead.Next

代码

Go

/**
 * Definition for singly-linked list.
 * type ListNode struct {
 *     Val int
 *     Next *ListNode
 * }
 */
func removeElements(head *ListNode, val int) *ListNode {
  dummyHead := new(ListNode)
  dummyHead.Next = head
  for p := dummyHead; p != nil && p.Next != nil; {
    if p.Next.Val == val {
      p.Next = p.Next.Next
    } else {
      p = p.Next
    }
  }
  return dummyHead.Next
}

Link

GitHub

目录
相关文章
|
3月前
【力扣】-- 移除链表元素
【力扣】-- 移除链表元素
40 1
|
3月前
Leetcode第21题(合并两个有序链表)
这篇文章介绍了如何使用非递归和递归方法解决LeetCode第21题,即合并两个有序链表的问题。
54 0
Leetcode第21题(合并两个有序链表)
|
3月前
【LeetCode 27】347.前k个高频元素
【LeetCode 27】347.前k个高频元素
41 0
|
30天前
|
Go 索引
go语言修改元素
go语言修改元素
31 6
|
3月前
LeetCode第二十四题(两两交换链表中的节点)
这篇文章介绍了LeetCode第24题的解法,即如何通过使用三个指针(preNode, curNode, curNextNode)来两两交换链表中的节点,并提供了详细的代码实现。
30 0
LeetCode第二十四题(两两交换链表中的节点)
|
3月前
Leetcode第十九题(删除链表的倒数第N个节点)
LeetCode第19题要求删除链表的倒数第N个节点,可以通过快慢指针法在一次遍历中实现。
47 0
Leetcode第十九题(删除链表的倒数第N个节点)
|
3月前
|
索引
力扣(LeetCode)数据结构练习题(3)------链表
力扣(LeetCode)数据结构练习题(3)------链表
102 0
|
4月前
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
|
5月前
|
Python
【Leetcode刷题Python】剑指 Offer 32 - III. 从上到下打印二叉树 III
本文介绍了两种Python实现方法,用于按照之字形顺序打印二叉树的层次遍历结果,实现了在奇数层正序、偶数层反序打印节点的功能。
64 6
|
5月前
|
搜索推荐 索引 Python
【Leetcode刷题Python】牛客. 数组中未出现的最小正整数
本文介绍了牛客网题目"数组中未出现的最小正整数"的解法,提供了一种满足O(n)时间复杂度和O(1)空间复杂度要求的原地排序算法,并给出了Python实现代码。
130 2