【leetcode】203. 移除链表元素(python)

【leetcode】203. 移除链表元素(python),第1张

写法一:不新建头结点
# Definition for singly-linked list.
# class ListNode(object):
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution(object):
    def removeElements(self, head, val):
        """
        :type head: ListNode
        :type val: int
        :rtype: ListNode
        """
        # 写法一:不新new一个头结点的写法
        if not head:   
            return head
        while head.val == val:
            if not head.next:
                return 
            head = head.next
        pre = head
        p = head.next
        while p:
            if p.val == val:
                pre.next = p.next
                p = p.next
            else:
                pre = p
                p = p.next
        return head
写法二:新建一个头结点,统一首元结点和链表中间结点的 *** 作
# Definition for singly-linked list.
# class ListNode(object):
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution(object):
    def removeElements(self, head, val):
        """
        :type head: ListNode
        :type val: int
        :rtype: ListNode
        """
        # 写法二:new 一个头结点,让头结点的指针指向首元结点,统一 *** 作(让首元结点和链表中间的结点的 *** 作一致)
        dummyNode = ListNode(0, head)
        pre = dummyNode
        p = head
        while p:
            if p.val == val:
                pre.next = p.next
                p = p.next
            else:
                pre = p
                p = p.next
        return dummyNode.next

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

原文地址: http://outofmemory.cn/langs/737450.html

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

发表评论

登录后才能评论

评论列表(0条)

保存