合并两个已排序的链表,并将其作为新的已排序列表返回。新的列表应该通过将前两个列表的节点拼接在一起来制作。
示例:
输入: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