203. 移除链表元素
题目:
给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。
解题:
核心思想:遍历列表,遇到符合题目条件的删除
细节:
- 要在头节点前设立头指针,为了在链表中第一个节点就要被删时服务
- 删除节点时,我们通常需要前一个节点的指针。所以,我们通常直接基于“前一个指针”,然后直接对后面的节点进行判断,符合条件的直接删除
- 推动循环的条件不是统一的
cur = cur.next。我们只在确定了下一个节点不会被删除后,才会移动指针,否则,就不停的进行判断 - 循环语句判断条件
cur.next是建立在第3点条件下的,对全局的一个判断,即其不会与循环内的语句冲突从而报错。
代码:
class Solution:
def removeElements(self, head: ListNode, val: int) -> ListNode:
res = ListNode(None, head)
cur = res
while cur.next:
if cur.next.val == val:
cur.next = cur.next.next
else:
cur = cur.next
return res.next
该博客详细解析了如何删除链表中所有值等于给定整数的节点。核心策略是在遍历链表过程中,遇到目标值时直接跳过当前节点。代码实现中,创建了一个虚拟头节点res来处理可能的头节点删除情况,同时确保在确定当前节点的下一个节点不被删除后再移动指针。
1847

被折叠的 条评论
为什么被折叠?



