leetcode 21:合并两个有序链表

解题思路

首先创建一个dummy节点,这个节点用于返回目标链表。
创建一个while循环。循环的终止体条件为 l1l2两个链表其中一个为null
循环内部逻辑:如果l1的值小于l2的值,就将current.next节点的值指向l1,且更新l1l1.next,反之current.nextl2的值,且更新l2l2.next

function ListNode(val, next) {
  this.val = val === undefined ? 0 : val;
  this.next = next === undefined ? null : next;
}
var mergeTwoLists = function (list1, list2) {
  //创建一个dummy
  const dummy = new ListNode(0);
  let current = dummy;
  //开始循环
  while (l1 != null && l2 != null) {
    if (l1.val < l2.val) {
      current.next = l1;
      l1 = l1.next;
    } else {
      current.next = l2;
      l2 = l2.next;
    }
  }
  //如果连个链表的长度不一样,最后肯定会有未合并的数据
  if (l1 !== null) {
    current.next = l1;
  } else {
    current.next = l2;
  }

  return dummy.next;
};


你可能感兴趣的:(leetcode,链表,javascript)