做招聘网站需要什么,网站突然暴增流量,域名备案查询网站备案,嵌入式培训班多少钱题目链接#xff1a;203. 移除链表元素 - 力扣#xff08;LeetCode#xff09;
题目描述#xff1a;
给你一个链表的头节点 head 和一个整数 val #xff0c;请你删除链表中所有满足 Node.val val 的节点#xff0c;并返回 新的头节点 。
示例 1#xff1a;
输入203. 移除链表元素 - 力扣LeetCode
题目描述
给你一个链表的头节点 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
输出[]
解题思路虚拟头节点
考虑到如果要移除的元素如果是头节点的话需要head head.next那么每次都需要判断头节点和非头节点需要不同的处理方式较为复杂所以此处引入虚拟头节点避免了这一问题。
移除元素时需要知道上一个元素将上一个元素指向要移除元素的下一个元素所以需要初始化一个指针指向当前节点遍历链表进行循环循环条件是当前指针的下一个元素不为空。
代码
class ListNode:def __init__(self,val 0,next None):self.val valself.next next
class Solution:def removeElements(self,head:Optional[ListNode],target:int)-Optional[ListNode]:# 初始化虚拟头节点dummy_head ListNode(next head)# 初始化指针cur dummy_headwhile cur.next:if cur.next.val targetcur.next cur.next.nextelse:cur cur.nextreturn dummy_head.next