以后链表题碰上直接先加空头结点
class Solution(object):
def mergeTwoLists(self, list1, list2):
LN_head_re=LN_head_l3=ListNode()
while list2 and list1:
if list1.val<=list2.val:
LN_head_l3.next=list1
list1=list1.next
else:
LN_head_l3.next=list2
list2=list2.next
LN_head_l3 = LN_head_l3.next
if list1==None and list2==None:
pass
elif list1==None:
LN_head_l3.next=list2
else:
LN_head_l3.next=list1
return LN_head_re.next
官方题解:
1:递归,这道题用递归代码十分简洁啊
class Solution:
def mergeTwoLists(self, l1, l2):
if l1 is None:
return l2
elif l2 is None:
return l1
elif l1.val < l2.val:
l1.next = self.mergeTwoLists(l1.next, l2)
return l1
else:
l2.next = self.mergeTwoLists(l1, l2.next)
return l2
2:迭代:
class Solution:
def mergeTwoLists(self, l1, l2) :
prehead = ListNode(-1)
prev = prehead
while l1 and l2:
if l1.val <= l2.val:
prev.next = l1
l1 = l1.next
else:
prev.next = l2
l2 = l2.next
prev = prev.next
# 合并后 l1 和 l2 最多只有一个还未被合并完,我们直接将链表末尾指向未合并完的链表即可
prev.next = l1 if l1 is not None else l2
return prehead.next
l1 if l1 is not None else l2
这种写法是应该会的