合并到链接列表,但出现了一个不寻常的None类型错误



合并两个已排序的链表,并将其作为新的已排序列表返回。新的列表应该通过将前两个列表的节点拼接在一起来制作。

示例:

输入:1->2->4, 1->3->4输出:1->1->2->3->4->4

  • 我知道这不是最佳解决方案,但我仍然无法理解我的错误*
# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution(ListNode):
def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:
lst =[]
while(l1!=None):
#print("I")
lst.append(l1.val)
l1 = l1.next
while (l2!=None):
#print("I")
lst.append(l2.val)
l2 = l2.next
lst.sort()
#print(lst)
l = ListNode(0)
#temp : ListNode()
temp = l
# temp.val = l.val
for i in lst:
temp.val = i
temp = temp.next
return l

错误是

AttributeError: 'NoneType' object has no attribute 'val'
temp.val = i

问题在于线下

temp = temp.next

您将temp初始化为l,但它没有任何下一个元素,它只是一个元素。换句话说,temp.next就是None,所以每当您进入for循环的第二次迭代时,您都会看到AttributeError: 'NoneType' object has no attribute 'val'

解决方案:

class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
lst = [1,2,3,4]
l = ListNode(lst[0])
temp = l
for i in lst[1:]:
temp.next = ListNode(i)
temp = temp.next

最新更新