力扣每日一题:203.移除链表元素 图解链表判断过程

简介: 力扣每日一题:203.移除链表元素 图解链表判断过程

203.移除链表元素


https://leetcode-cn.com/problems/remove-linked-list-elements/solution/203yi-chu-lian-biao-yuan-su-tu-jie-lian-u2qii/

难度:简单


题目:

给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。


示例:

网络异常,图片无法展示
|

image.png

示例 1:
输入:head = [1,2,6,3,4,5,6], val = 6
输出:[1,2,3,4,5]
示例 2:
输入:head = [], val = 1
输出:[]
示例 3:
输入:head = [7,7,7,7], val = 7
输出:[]


分析

  1. 首先我们创建一个空链表头ret,然后使用tmp = ret进行链表操作
  2. 之后开始循环head链表
  3. 当该节点的值不等于val时,将tmp的next指向该节点,然后将tmp指向它的next节点。
  4. 这里注意tmp在结束时,需要将它的未节点指向None,避免出现符合条件的最后一次赋值后,链接指向错误问题。

网络异常,图片无法展示
|

image.png


解题:

class Solution:
    def removeElements(self, head: ListNode, val: int) -> ListNode:
        tmp = ret = ListNode()
        while head:
            if head.val != val:
                tmp.next = head
                tmp = tmp.next
            head = head.next
        tmp.next = None
        return ret.next


相关文章
|
5天前
|
索引
每日一题:力扣328. 奇偶链表
每日一题:力扣328. 奇偶链表
13 4
|
5天前
leetcode代码记录(下一个更大元素 II
leetcode代码记录(下一个更大元素 II
7 0
|
5天前
|
索引
leetcode代码记录(下一个更大元素 I
leetcode代码记录(下一个更大元素 I
7 0
|
6天前
leetcode代码记录(移除链表元素
leetcode代码记录(移除链表元素
10 0
|
6天前
leetcode代码记录(移除元素
leetcode代码记录(移除元素
9 0
【每日一题】LeetCode——反转链表
【每日一题】LeetCode——反转链表
【每日一题】LeetCode——链表的中间结点
【每日一题】LeetCode——链表的中间结点
|
20天前
|
C++
[leetcode 链表] 反转链表 vs 链表相交
[leetcode 链表] 反转链表 vs 链表相交
|
2月前
|
算法
LeetCode刷题---19. 删除链表的倒数第 N 个结点(双指针-快慢指针)
LeetCode刷题---19. 删除链表的倒数第 N 个结点(双指针-快慢指针)
|
2月前
|
存储
LeetCode刷题---817. 链表组件(哈希表)
LeetCode刷题---817. 链表组件(哈希表)