题目描述:将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。

示例 1:
输入:l1 = [1,2,4], l2 = [1,3,4]
输出:[1,1,2,3,4,4]

示例 2:
输入:l1 = [], l2 = []
输出:[]

示例 3:
输入:l1 = [], l2 = [0]
输出:[0]

提示:
两个链表的节点数目范围是 [0, 50]
-100 <= Node.val <= 100
l1 和 l2 均按 非递减顺序 排列

# 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:
        ln=ListNode(-1) #ln初始化有一个值-1,默认为0
        pre=ln #pre当指针用
        while l1 and l2: #l1,l2都不空
            if l1.val<=l2.val: #链表值比较
                pre.next=l1
                l1=l1.next
            else:
                pre.next=l2
                l2=l2.next
            pre=pre.next #还有链表值未加入
        pre.next=l1 if l1 is not None else l2 # # 合并后 l1 和 l2 最多只有一个还未被合并完,我们直接将链表末尾指向未合并完的链表
        return ln.next #ln作为新链表输出,因初始化有-1,故从下一个值输出

注释:https://leetcode-cn.com/problems/merge-two-sorted-lists/solution/lc21-he-bing-liang-ge-you-xu-lian-biao-di-gui-by-f/