21. 合并两个有序链表

LeetCode 原题链接 题目

实现思路

  • 创建一个新的链表,使用一个指针 p 来构建新的链表。
  • 使用两个指针 l1l2 分别指向两个输入链表的头节点。
  • 通过比较 l1l2 当前节点的值,将较小的节点添加到新的链表中,并移动相应的指针。
  • 当其中一个链表遍历完后,将另一个链表剩余的部分直接连接到新的链表末尾。
  • 最后返回新链表的头节点。

代码实现

var mergeTwoLists = function(list1, list2) {
    let l1 = list1
    let l2 = list2
    const dummy = new ListNode(0)
    let p = dummy

    while(l1 && l2) {
        if(l1.val <= l2.val) {
            p.next = new ListNode(l1.val)
            l1 = l1.next
        } else {
            p.next = new ListNode(l2.val)
            l2 = l2.next
        }
        p = p.next
    }

    p.next = l1 === null ? l2 : l1

    return dummy.next
};