打怪升级之旅第11天【leetcode】21. 合并两个有序链表

45 阅读1分钟

题目描述

  1. 将两个有序链表合并为一个新的有序链表并返回

示例: 示例: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4

思路分析

哨兵结点 来简化判断 做链表的题目 处理链表的本质 是处理链表结点之间的指针关系

function ListNode(val, next = null) {
  this.val = val
  this.next = next
}
/**
 * @description 合并两个有序链表
 * 时间复杂度 O(min(m,n))
 * 空间复杂度 O(1)
 * @param {ListNode} l1 
 * @param {ListNode} l2 
 * @returns {ListNode}
 */
function mergeTwoLists(l1, l2) {
  let dummy = new ListNode(0)
  let temp = head
  while (l1 && l2) {
    if (l1.val > l2.val) {
      temp.next = l2
      l2 = l2.next
    } else {
      temp.next = l1
      l1 = l1.next
    }
    temp = temp.next
  }

  temp.next = l1 ? l1 : l2
  return dummy.next
}

image.png Baybay!!