一. 题目
-
题目
将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 -
示例
二. 方法一
-
解题思路
-
解题代码
def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode: # 创建一个空链表, 用于存放合并后的链表 result = ListNode() # cur, pointer1, pointer2分别指向result, l1 和 l2的头节点 cur, pointer1, pointer2 = result, l1, l2 # 如果l1和l2都还未遍历到尾节点 while pointer1 and pointer2: if pointer1.val < pointer2.val: cur.next = pointer1 cur = cur.next pointer1 = pointer1.next else: cur.next = pointer2 cur = cur.next pointer2 = pointer2.next # 到这一步, 说明l1和l2中至少有一个链表已经遍历完了 # 然后再将未遍历完的链表继续遍历 if pointer1: cur.next = pointer1 if pointer2: cur.next = pointer2 # 返回合并后的链表 return result.next
-
分析
时间复杂度: O(n + m)
空间复杂度: O(n + m)