应用题-链表专题-移除链表元素

管理员
关键点: - 如何统一操作 - 删除节点必须知道前驱结点 ```python # 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 None dummy = ListNode( next=head ) cur = dummy while cur.next: if cur.next.val == val: cur.next = cur.next.next else: cur = cur.next return dummy.next ``` 单链表递归的一般模式: ```python # 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 None # removeElements的含义: 返回完整的已经去掉val节点的子链表 # !important: 链接 在当前递归层用当前节点接住后面的子链表 head.next = self.removeElements( head.next, val ) if head.val == val: return head.next return head ```
评论 0

发表评论 取消回复

Shift+Enter 换行  ·  Enter 发送
还没有评论,来发表第一条吧