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

题目:

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 

通过截图:

资料:

posted @ 2023-12-31 13:15  o蹲蹲o  阅读(2)  评论(0编辑  收藏  举报