欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-07-12 08:55:32
...

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,不删除节点。