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