博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
203. 移除链表元素
阅读量:5161 次
发布时间:2019-06-13

本文共 2271 字,大约阅读时间需要 7 分钟。

题意

删除链表中等于给定值 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

转载于:https://www.cnblogs.com/George1994/p/10598117.html

你可能感兴趣的文章
计算机改名导致数据库链接的诡异问题
查看>>
Java8内存模型—永久代(PermGen)和元空间(Metaspace)(转)
查看>>
ObjectiveC基础教程(第2版)
查看>>
centos 引导盘
查看>>
Notes of Daily Scrum Meeting(12.8)
查看>>
Apriori算法
查看>>
onlevelwasloaded的调用时机
查看>>
求出斐波那契数组
查看>>
lr_start_transaction/lr_end_transaction事物组合
查看>>
CodeIgniter学习笔记(四)——CI超级对象中的load装载器
查看>>
.NET CLR基本术语
查看>>
ubuntu的home目录下,Desktop等目录消失不见
查看>>
建立,查询二叉树 hdu 5444
查看>>
[Spring框架]Spring 事务管理基础入门总结.
查看>>
2017.3.24上午
查看>>
Python-常用模块及简单的案列
查看>>
LeetCode 159. Longest Substring with At Most Two Distinct Characters
查看>>
LeetCode Ones and Zeroes
查看>>
基本算法概论
查看>>
jquery动态移除/增加onclick属性详解
查看>>