https://leetcode-cn.com/problems/merge-two-sorted-lists/
点击查看【bilibili】

题目

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
21. 合并两个有序链表 Merge Two Sorted Lists - 图1

示例

  1. 输入:1->2->4, 1->3->4
  2. 输出:1->1->2->3->4->4
  3. Input: l1 = [1,2,4], l2 = [1,3,4]
  4. Output: [1,1,2,3,4,4]
  5. Input: l1 = [], l2 = []
  6. Output: []
  7. Input: l1 = [], l2 = [0]
  8. Output: [0]

解答

  1. 创建curr(空链表),dummy指向curr
  2. 循环两个链表,两个链表都不为空时,比较值
  3. 把最小的值排在前面赋值给新链表,最小值的链表指针向前移动,新链表指针向前移动,

继续进行循环比较

  1. 当其中一个链表遍历完了(null),另一个链表中剩余的数肯定是比这个链表的数要大,

那么直接把剩余链表赋值给新链表

  1. 返回dummy值

答案

var mergeTwoLists = function(l1, l2) {
    let curr = new ListNode()
    let dummy = curr;

    // 当两个链表都不为空的时候进行比较
    while(l1!== null && l2!== null) {
        // 如果l1的值小于l2的值,curr=l1
        if(l1.val < l2.val) {
            curr.next = l1
            l1 = l1.next
        // 否则curr=l2
        }else {
            curr.next = l2
            l2 = l2.next
        }
        // curr指针向前移动,不然再次循环会覆盖当前值
        curr = curr.next
    }
    // 把剩余链表添加到新链表
    if(l1!== null) {
        curr.next = l1
    }
    if(l2!== null) {
        curr.next = l2
    }
    return dummy.next
};