Merge two sorted linked lists and return it as a new sorted list. The new list should be made by splicing together the nodes of the first two lists.

Example 1:
Input: l1 = [1,2,4], l2 = [1,3,4]
Output: [1,1,2,3,4,4]

Example 2:
Input: l1 = [], l2 = []
Output: []

Example 3:
Input: l1 = [], l2 = [0]
Output: [0]

Constraints:

  • The number of nodes in both lists is in the range [0, 50].
  • -100 <= Node.val <= 100
  • Both l1 and l2 are sorted in non-decreasing order.

Solution in python:

# 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 == None:
            return l2
        if l2 == None:
            return l1
        result = l1 if l1.val<l2.val else l2
        pre = None
        while l1 and l2:
            while l1 and l2 and l1.val < l2.val:
                pre = l1
                l1 = l1.next
            if pre != None:
                pre.next = l2
            if l1 == None or l2 == None:
                break
            while l1 and l2 and l2.val <= l1.val:
                pre = l2
                l2 = l2.next
            if pre != None:
                pre.next = l1

        return result
最后修改日期: 2020年12月21日

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。