# [21] 合并两个有序链表

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

示例:

输入:1->2->4, 1->3->4

输出:1->1->2->3->4->4

这道题实际上就是一次归并排序的思想,两个有序子数组合并为一个有序数组,只不过形式换成了链表。

非常简单,注意新链表创建头结点即可。

function ListNode(val) {
  this.val = val;
  this.next = null;
}

var mergeTwoLists = function(l1, l2) {
  const dummy = new ListNode();
  let cur = dummy;
  while (l1 && l2) {
    const node = new ListNode();
    if (l1.val < l2.val) {
      node.val = l1.val;
      l1 = l1.next;
    } else {
      node.val = l2.val;
      l2 = l2.next;
    }
    cur.next = node;
    cur = cur.next;
  }
  if (l1) {
    cur.next = l1;
  }
  if (l2) {
    cur.next = l2;
  }
  return dummy.next;
};