1 题目描述
2 解题思路
2.1 哨兵节点+循环
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:
tmp=ListNode(0)#哨兵节点
ret=tmp
while(l1!=None and l2!=None):
#如果l1和l2都有值得情况下
if(l1.val<=l2.val):
tmp.next=ListNode(l1.val)
tmp=tmp.next
l1=l1.next
else:
tmp.next=ListNode(l2.val)
tmp=tmp.next
l2=l2.next
if(l1!=None):
tmp.next=l1
if(l2!=None):
tmp.next=l2
#如果l1和l2还有一个有值
return(ret.next)
2.2 迭代
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:
if(l1==None and l2==None):
return None
elif(l2==None):
return l1
elif(l1==None):
return l2
elif(l1.val>=l2.val):
tmp=ListNode(l2.val)
tmp.next=self.mergeTwoLists(l1,l2.next)
return tmp
else:
tmp=ListNode(l1.val)
tmp.next=self.mergeTwoLists(l1.next,l2)
return tmp