Leetcode Tag Search | Back

21. Merge Two Sorted Lists

Category: /leetcode

Leetcode Link

Merge two sorted linked lists and return it as a sorted list. The 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

Iteration

T: O(m + n), S:O(1)

def mergeTwoLists(self, l1, l2):
  prehead = ListNode(-1)

  curr = prehead
  while l1 and l2:
    if l1.val < l2.val:
      curr.next = l1
      l1 = l1.next
    else:
      curr.next = l2
      l2 = l2.next
    curr = curr.next
  curr.next = l1 or l2

  return prehead.next

Recursion

T: O(m + n), S:O(m + n)

def mergeTwoList(self, l1, l2):
  if not l1: return l2
  if not l2: return l1

  if l1.val < l2.val:
    l1.next = self.mergeTwoList(l1.next, l2)
    return l1
  else:
    l2.next = self.mergeTwoList(l1, l2.next)
    return l2

讨论

提示

  • 如果看不到讨论部分, 请暂时关掉adblock in Firefox/Chrome
  • 本网站使用Javascript实现评论功能, 此处外链对提高您的网站PR没有帮助. (潜台词: 请不要灌水, 谢谢)