【前端算法每日一题】leetcode-剑指Offer25.合并两个排序的链表

68 阅读1分钟

题目描述

  • 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。

解题思路

  • 双指针
  • 一个指针记录链表头节点
  • 另一个指针记录链表新节点

解题代码(JavaScript)

var mergeTwoLists = function (l1, l2) {
  // 头指针
  let head = new ListNode(0);
  // 记录链表新节点指针
  let p = head;
  // l1和l2两个链表都存在
  // 比较节点值的大小移动指针记录链表节点
  while (l1 && l2) {
    if (l1.val <= l2.val) {
      p.next = l1;
      l1 = l1.next;
    } else {
      p.next = l2;
      l2 = l2.next;
    }
    p = p.next;
  }
  // l2为空时
  if (l1) {
    p.next = l1;
  }
  // l1为空时
  if (l2) {
    p.next = l2;
  }
  return head.next;
};