21. Merge Two Sorted Lists
方法一:递归方法
# 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, list1: Optional[ListNode], list2: Optional[ListNode]) -> Optional[ListNode]:
if list1==None:
return list2
elif list2==None:
return list1
else:
if list1.val<=list2.val:
list1.next=self.mergeTwoLists(list1.next,list2)
return list1
else:
list2.next=self.mergeTwoLists(list1,list2.next)
return list2
return None
方法二:迭代
# 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, list1: Optional[ListNode], list2: Optional[ListNode]) -> Optional[ListNode]:
headNode=ListNode()
pre=headNode
while list1 and list2:
if list1.val<=list2.val:
pre.next=list1
list1=list1.next
else:
pre.next=list2
list2=list2.next
pre=pre.next
if list1:
pre.next=list1
elif list2:
pre.next=list2
return headNode.next