9/10测试用例正在通过,泄漏在哪里
给定整数l和整数k的单链列表,从列表l中删除所有值等于k的元素。
def solution(l, k):
len = 0
l2 = l1 = ListNode(None)
l1.next = l
while l is not None:
len = len + 1
l = l.next
if len == 0:
return l
elif len == 1:
if l1.next == k:
return l
else:
return l1.next
else:
while l1.next is not None:
if l1.next.value == k:
l1.next = l1.next.next
else:
l1 = l1.next
return l2.next
您的代码中有以下几行:
if l1.next == k:
和:
if l1.next.value == k:
其中一个肯定是错误的,因为第一个比较ListNode,而另一个比较ListNode值。假设k
表示值,则应将第一个值更正为:
if l1.next.value == k:
其他备注
- 没有必要首先计算列表中的节点数
- 没有必要单独处理列表没有节点或只有一个节点的情况
以下是如何减少代码:
def solution(l, k):
prehead = ListNode(None)
prehead.next = l
l = prehead
while l.next is not None:
if l.next.value == k:
l.next = l.next.next
else:
l = l.next
return prehead.next