代码随想录算法训练营第三天| LeetCode203.移除链表元素、707.设计链表、206.反转链表

文章目录

  • 一、203. 移除链表元素
    • 感受
    • 代码
  • 二、707.设计链表
    • 感受
    • 代码
  • 206.反转链表
    • 感受
  • 总结


一、203. 移除链表元素

代码随想录算法训练营第三天| LeetCode203.移除链表元素、707.设计链表、206.反转链表_第1张图片

感受

我对这道题。从理论上来说太熟悉了。咸鱼讲数据结构常用的方法他都会讲。但是我没上机没写过。到后面上机还是写不出来。giao。

代码

第一次写,想说一下,要注意边界值。我第一次的时候,循环的条件就写错了。我写成 while q.next and q.next.next了 认为删除操作,至少要有三个node节点,结果还要单独处理尾节点。

# 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]:
        # 如果为空,就直接返回
        if not head:
            return head
        #现在,我们在实现有头结点的版本
        # 现在p就是虚拟头结点了
        p = ListNode(next=head)
        # 新建了一个指针,让他来遍历我们的单链表
        q = p
        while q.

你可能感兴趣的:(算法,链表,python)