递归:移除链表元素

Posted 我家大宝最可爱

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了递归:移除链表元素相关的知识,希望对你有一定的参考价值。

移除链表元素

  1. 首先假设子问题已经解决了,即子链表已经移除了指定的元素
  2. 当前元素该如何做才能拼接上子链表,并且可以解决原问题

从下图可以看出,假设我们已经得到了子问题的返回解sr,那么对当前元素该如何处理呢?这里分了两种情况

  1. 当x=val时,我们要把这个元素删除,那么直接返回子问题的解即可
  2. 当x!=val时,我们直接把子问题的解拼接在head后面,然后返回head即可

    最终的代码实现
# 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 head is None:
            return head
        
        sr = self.removeElements(head.next,val)
        if head.val == val:
            return sr
        else:
            head.next = sr
            return head

以上是关于递归:移除链表元素的主要内容,如果未能解决你的问题,请参考以下文章

移除链表元素(无傀儡节点,递归+迭代)

移除链表元素(无傀儡节点,递归+迭代)

leetcode No203 移除链表元素 java

移除链表元素

203链表-移除链表元素

203链表-移除链表元素