21. 合并两个有序链表

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

示例:

输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4

 1 # Definition for singly-linked list.
 2 # class ListNode:
 3 #     def __init__(self, val=0, next=None):
 4 #         self.val = val
 5 #         self.next = next
 6 class Solution:
 7     def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:
 8         if l1 and l2:
 9             if l1.val>l2.val:
10                 l1,l2=l2,l1
11             l1.next=self.mergeTwoLists(l1.next,l2)
12         return l1 or l2

代码流程:

1.判断 l1 或 l2 中是否有一个节点为空,如果存在,那么我们只需要把不为空的节点接到链表后面即可
2.对 l1 和 l2 重新赋值,使得 l1 指向比较小的那个节点对象
3.修改 l1 的 next 属性为递归函数返回值
4.返回 l1,注意:如果 l1 和 l2 同时为 None,此时递归停止返回 None

原文地址:https://www.cnblogs.com/hly97/p/13257549.html