zhangdizhangdi

21.合并两个有序链表

题目

LeetCode 简单

题目

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

示例:
输入:l1 = [1,2,4], l2 = [1,3,4]
输出:[1,1,2,3,4,4]

题解

迭代 O(n+m) O(1)

ts
function mergeTwoLists(
  list1: ListNode | null,
  list2: ListNode | null,
): ListNode | null {
  const res = { val: 0, next: null }
  let p = res
  let p1 = list1
  let p2 = list2
  while (p1 && p2) {
    if (p1.val < p2.val) {
      p.next = p1
      p1 = p1.next
    } else {
      p.next = p2
      p2 = p2.next
    }
    p = p.next
  }
  if (p1) {
    p.next = p1
  }
  if (p2) {
    p.next = p2
  }
  return res.next
}

const l1 = new LinkedList([1, 2, 4])
const l2 = new LinkedList([1, 3, 4])
console.log('🌰', mergeTwoLists(l1.head, l2.head))