• 203. 移除链表元素


    203. 移除链表元素

    题意

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

    解题思路

    1. 把下个结点的值赋值给当前结点,删除下一个结点;

    2. 增加一个多余的头结点,方便记录下前结点,将前结点指向下个结点,删除当前结点;

    实现

    # Definition for singly-linked list.
    # class ListNode(object):
    #     def __init__(self, x):
    #         self.val = x
    #         self.next = None

    class Solution(object):
       def removeElements(self, head, val):
           """
          :type head: ListNode
          :type val: int
          :rtype: ListNode
          """
           node = head
           while node and node.val != val:
               node = node.next
           
           while node:
               if node.val == val:
                # 把下个结点的值赋值给当前结点,实际是删除下一个结点
                   if node.next != None:
                       node.val = node.next.val
                       node.next = node.next.next
                   elif head == node:  # 头结点
                       head = None
                       break
                   else: # 尾结点
                       cur = head
                       while cur.next and cur.next != node:
                           cur = cur.next
                       cur.next = None
                       break
               else:
                   node = node.next
           return head
         
    def removeElements(self, head, val):
           """
          :type head: ListNode
          :type val: int
          :rtype: ListNode
          """
           # 新增一个起始结点,方便获取前结点(比如在删除首结点的时候)
           start = ListNode(0)
           start.next = head
           prev = start
           cur = head
           
           while cur is not None:
               if cur.val != val:
                   prev = cur
                   cur = cur.next
               else:
                   prev.next = cur.next
                   cur = prev.next
                   
           return start.next
         
       def removeElements(self, head, val):
           """
          :type head: ListNode
          :type val: int
          :rtype: ListNode
          """
           try:
               while head.val == val:
                   head = head.next
               cur = head
               nex = cur.next
               while nex:
                   if nex.val != val:
                       cur.next = nex
                       cur = cur.next
                   nex = nex.next
               if cur.next.val == val:
                   cur.next = None
           except:
               True
           return head

  • 相关阅读:
    AtCoder Beginner Contest 162 C~F
    题解 | 【CF896B】 Ithea Plays With Chtholly
    C# | C#快速入门
    Codeforces Round #618 (Div. 2) A~E
    Educational Codeforces Round 92 (Rated for Div. 2) A~C
    使用 Python 参与算法竞赛
    【网络爬虫学习】实战,爬取网页以及贴吧数据
    国内pip源提示“not a trusted or secure host”解决方案
    【网络爬虫学习】第一个Python爬虫程序 & 编码与解码详解 & Pythonの实现
    【网络爬虫学习】网页的基本构成
  • 原文地址:https://www.cnblogs.com/George1994/p/10598117.html
Copyright © 2020-2023  润新知