输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。
示例1:
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
限制:
0 <= 链表长度 <= 1000
# 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 is None and l2 is None:
return None
dump = ListNode()
# 我们使用递归的方法进行求解
self.get_next_node(l1, l2, dump)
# l3的头节点是伪头节点,返回时去掉
return dump.next
def get_next_node(self, l1, l2, cur):
if l1 is None and l2 is None:
return None
elif l1 is None:
# l1已空,则将l2中的内容复制给l3
cur.next = l2
return l2
elif l2 is None:
# l2已空,则将l1中的内容复制给l3
cur.next = l1
return l1
# 比较两个链表的头节点,哪个节点的值小,则将该节点赋值给l3
# 给l3申请节点
# 将较小的那个值复制给l3
if l1.val <= l2.val:
cur.next,l1 = l1,l1.next
else:
cur.next,l2 = l2,l2.next
# print(l3)
# 递归获取l3的下一个值,l3的下一个节点,再下一次递归的时候将会被改变
cur = cur.next
self.get_next_node(l1, l2, cur)