zoukankan      html  css  js  c++  java
  • 【Leetcode链表】移除链表元素(203)

    题目

    删除链表中等于给定值 val 的所有节点。

    示例:

    输入: 1->2->6->3->4->5->6, val = 6
    输出: 1->2->3->4->5
    

    解答

    三种方法:

    • 双指针
    • 递归
    • 新开辟一个链表,增加空间复杂度

    通过代码如下:

    # Definition for singly-linked list.
    # class ListNode:
    #     def __init__(self, x):
    #         self.val = x
    #         self.next = None
    
    class Solution:
        # # 方法一:双指针。 时间复杂度O(n),空间复杂度O(1)
        def removeElements(self, head: ListNode, val: int) -> ListNode:
            thead = ListNode(-100)
            thead.next = head
            p, c = thead, head
    
            while c:
                if c.val == val:
                    p.next = c.next
                    c = c.next
                else:
                    p = c
                    c = c.next
            return thead.next
    
        # # 方法三:
        # # 最笨方法,新建一条链表存。时间复杂度O(n),空间复杂度O(n)
        # def removeElements(self, head: ListNode, val: int) -> ListNode:
        #     thead = ListNode(-100)
        #     p = thead
        #     while head:
        #         if head.val != val:
        #             temp = ListNode(head.val)
        #             p.next = temp
        #             p = temp
        #         head = head.next
        #     return thead.next
    
    
        # # 方法二:递归
        # # 回溯时,判断当前节点的值是不是val。 时间复杂度O(n),空间复杂度O(n)
        # def removeElements(self, head: ListNode, val: int) -> ListNode:
        #     if not head:
        #         return head
            
        #     head.next = self.removeElements(head.next, val)
        #     if head.val == val:
        #         return head.next
        #     return head
    
    
    
  • 相关阅读:
    IO模型
    Redis的cluster模式
    #4789. 啊孤独感放辣椒
    #4754. 旅途
    #3189. 八纵八横(c)
    洛谷P2624 [HNOI2008]明明的烦恼
    CF938G Shortest Path Queries
    [CTSC2010]珠宝商
    洛谷P1903 [国家集训队]数颜色 / 维护队列
    AtCoder3611 Tree MST
  • 原文地址:https://www.cnblogs.com/ldy-miss/p/11943457.html
Copyright © 2011-2022 走看看