LeetCode 203:移除链表元素 (虚拟头节点) python

LeetCode 203:移除链表元素 (虚拟头节点) python,第1张

LeetCode 203:移除链表元素 (虚拟头节点)python

接上篇,关于链表还可以统一的处理:虚拟头节点。


这样的好处是不用划分上一篇文章中的三种情况,可以统一化处理。



一、题目

见上篇,此处略过


二、解析

设置虚拟头节点

在python中按照节点class我们可以这么设置:dummy = ListNode(0, head)

dummy = ListNode(0, head) #定义虚拟节点

初始化头节点和上一个节点

头节点设置完成之后,只需要初始化当前头节点 node = head ,和上一个节点 last = dummy

last = dummy #上一个节点是虚拟头节点
node = head  #node指向head节点

判断值是否相等

当节点 node != None时,判断val是否匹配,如果 node.val == val 时,则 last.next = node.next;否则的话 last = node。


一次循环判断完成之后节点整体后移一个 node = node.next

while node:
    if node.val == val:
        last.next = node.next  #匹配到val时跳过当前node
    else:
        last = node   #否则的话last节点后移
    node = node.next  #当前node后移

三、编码

class Solution:
    def removeElements(self, head: ListNode, val: int) -> ListNode:
        #虚拟头节点
        dummy = ListNode(0, head)
        last = dummy
        node = head
        while node:
            if node.val == val:
                last.next = node.next
            else:
                last = node
            node = node.next
        return dummy.next

写在最后:

关于题目需要调试的,节点class(题目给出)、链表class(在上一篇中已经具体给出)以及最终的调试均已经在上一篇文章中给出,此篇只补充虚拟头节点的解析和编码,希望大家共勉~

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/568221.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-09
下一篇 2022-04-09

发表评论

登录后才能评论

评论列表(0条)

保存