示例 1:
输入:l1 = [1,2,4], l2 = [1,3,4]
输出:[1,1,2,3,4,4]
示例 2:
输入:l1 = [], l2 = []
输出:[]
示例 3:
输入:l1 = [], l2 = [0]
输出:[0]
解题思路:定义一个哑结点做新的链表头,两个非空链表的结点依次插入新链表的后面
考虑所有case分三种情况
1. 两个链表都为空时,返回空链表;
2. 有一个链表为空时,返回另外一个非空链表;
3.两个链表都非空时,从头到尾遍历比较,依次插入新链表的后面,当最后仍有一个链表非空时,将结点取出,依次往后插入,直到两个链表为空
# 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 not l1 and not l2:
return None
elif not l1:
return l2
elif not l2:
return l1
new_head = ListNode(None)
cur = new_head
while l1 and l2:
if l1.val < l2.val:
cur.next = l1
l1 = l1.next
else:
cur.next = l2
l2 = l2.next
cur = cur.next
if l1:
cur.next = l1
if l2:
cur.next = l2
return new_head.next