首页 > 编程语言 >day03 代码随想录算法训练营 203. 移除链表元素

day03 代码随想录算法训练营 203. 移除链表元素

时间:2023-12-31 13:23:13浏览次数:49  
标签:dummy ListNode val 随想录 next 链表 移除 节点

题目:

203. 移除链表元素

我的感悟:

  • 题目里的节点是已经给好的,
  • 创建虚拟节点,是为了方便处理头节点。
  • 加油,我可以的!!!!!

理解难点:

  • 节点已经给好的
  • 创建虚拟节点

代码难点:

  • p是临时变量,类似于for i in range(10) 这里的i,本身是用完就扔的。
  • 返回值为什么不能是p.next? 因为p是一个指针,不是链表里的节点。我们返回的是一个新的链表。
  •  p = p.next是为了下次循环

总结概括:

  • 轻轻松松!
  • 继续加油!
  • chatGPT 网页版就挺好用的。善用工具

代码示例:

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def removeElements(self, head: Optional[ListNode], val: int) -> Optional[ListNode]:
        # 创建一个节点
        dummy = ListNode()
        # 把这个节点里面的下一个next = 连接到题目给的head
        dummy.next = head
        # 创建一个临时指针p来指向dummy,用于遍历
        
        p = dummy
        # 遍历这个p
        while p.next:   # 只要有值
            if p.next.val == val:    # 如果找到了题目要求删除的val值
                p.next = p.next.next    # 重新指向新的节点
            else:
                p = p.next # 这一步没理解 , ###这一步是为了下轮循环

        return dummy.next   # 这里为什么不能写p.next ### 因为p.next有可能是None 
             

通过截图:

资料:

标签:dummy,ListNode,val,随想录,next,链表,移除,节点
From: https://www.cnblogs.com/liqi175/p/17937432

相关文章

  • 环形链表问题
    链表环形链表问题思路来源一周刷爆LeetCode,算法大神左神(左程云)耗时100天打造算法与数据结构基础到笔记内容问题来源:基于力扣141题进行拓展问题描述:给你一个链表的头节点head,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链表中存......
  • 【数据结构】链式家族的成员——循环链表与静态链表
    循环链表与静态链表导言大家好!很高兴又和大家见面啦!!!经过前面的介绍,相信大家对链式家族的成员——单链表与双链表的相关内容都已经熟练掌握了。前面我们重点介绍了通过C语言来实现单链表与双链表的一些基本操作,希望大家私下能够多多练习一下,帮助自己去吸收消化这些内容。在今天的篇......
  • 代码随想录day04 两两交换链表中的节点 删除链表的倒数第N个节点 链表相交 环形链表
    两两交换链表中的节点题目:这题画一下链表会比较清晰写写画画指针位置很快就可以写出来一开始以为一个tmp就够用了写着写着发现需要多一个代码:删除链表的倒数第N个节点:没什么思路只好先看看视频思路视频思路很简单也很清晰只需要两个指针一快一慢两指针的间......
  • 代码随想录day03 链表删除 链表类的实现 反转链表
    首先是链表的删除操作热身题这里使用了一个新的头指针这样在删除头指针的时候就不需要进行额外的判断然后是链表类的实现需要一点背诵加上深刻理解有时候理解了但是写起来还是会有些指针边界的小问题应该多写写多记一下就会好了还有就是手写链表要常复习吧学习新......
  • 代码随想录算法训练营第十七天 | 110.平衡二叉树,257. 二叉树的所有路径,404.左叶子之和
    一、110.平衡二叉树题目链接:LeetCode110.平衡二叉树学习:思路:后序遍历。实际上是由叶结点到根结点,若有一颗子树不是平衡二叉树,则直接返回给根结点二、257.二叉树的所有路径题目链接:LeetCode257.二叉树的所有路径学习:思路:递归+回溯。因为是线=先遍历根结点,然后遍历左孩......
  • 【数据结构】C语言实现双链表的基本操作
    双链表导言大家好,很高兴又和大家见面啦!!!经过前面几个篇章的内容分享,相信大家对顺序表和单链表的基本操作都已经熟练掌握了。今天咱们将继续分享线性表的链式存储的第二种形式——双链表。在今天的内容中,咱们将介绍双链表的创建以及一些基本操作,接下来跟我一起来看看吧!一、单链表与双......
  • day02 代码随想录算法训练营 977. 有序数组的平方
    题目:977. 有序数组的平方我的感悟:这道题,仔细观察,平方后两头的大。用双指针,取两头,放到新的数组里。新数组要求排序所以,新的数组从后往前放理解难点:无他,多练习。代码难点:无总结概括:双指针代码示例:classSolution:defsortedSquares(self,nums:List[in......
  • day01 代码随想录算法训练营 27. 移除元素
    题目:27.移除元素感悟:用快慢指针。本题是要原地删除。而删除这个行为在真实的计算机的数组里,是覆盖。所以,就用两个指针,(人)一个跑的快,一个跑的慢。他们身上带了个对讲机。跑的快的那个人负责检测后面的数字符合要求不,比如,要不等于3的,遇到一个2,告诉跑的慢的说2符合要求。遇......
  • python 删除链表的倒数第 N 个结点 多种解法
    解法一:双指针法这种解法使用两个指针,一个快指针和一个慢指针,它们之间的距离为N。首先,让快指针先移动N步。然后,同时移动快指针和慢指针,直到快指针到达链表末尾。此时,慢指针指向的节点就是要删除的节点的前一个节点。最后,将慢指针的下一个节点指向下下个节点,完成删除操作。defre......
  • 代码随想录算法训练营第十六天 |104.二叉树的最大深度,559.n叉树的最大深度,111.二叉树
    一、104.二叉树的最大深度题目链接:LeetCode104.二叉树的最大深度学习:思路:分别求左子树和右子树的高度,返回给根结点,加1之后是根结点的深度,这是后序遍历的思路二、559.n叉树的最大深度题目链接:LeetCode559.N叉树的最大深度学习前:思路:后序遍历。分别所有孩子结点的深......