LeetCode刷题之203.移除链表元素

LeetCode刷题之203.移除链表元素

我不知道将去向何方,但我已在路上!
时光匆匆,虽未曾谋面,却相遇于斯,实在是莫大的缘分,感谢您的到访 !
  • 题目
    删除链表中等于给定值 val 的所有节点。
  • 示例
输入: 1->2->6->3->4->5->6, val = 6
输出: 1->2->3->4->5
  • 代码:
# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None
class Solution:
    def removeElements(self, head: ListNode, val: int) -> ListNode:
        if head == None:
            return head
        head.next = self.removeElements(head.next,val)
        if head.val == val:
            return head.next
        else:
            return head
# 执行用时 :160 ms, 在所有 Python3 提交中击败了8.74%的用户
# 内存消耗 :27.1 MB, 在所有 Python3 提交中击败了5.08%的用户
  • 算法说明:
    使用递归算法,开宗明义,判断链表的头部是否指向None,如果是返回head;如果不是,如果当前值head.val等于给定值val;让head指向下一个节点,返回head.next,而递归表达式为head.next = self.removeElements(head.next,val),左边是head.next,可以删除当前节点;如果不等于给定的值,返回head,不删除节点。
发布了90 篇原创文章 · 获赞 1 · 访问量 1027

猜你喜欢

转载自blog.csdn.net/qq_34331113/article/details/103900022