尼采般地抒情

尼采般地抒情

尼采般地抒情

音乐盒

站点信息

文章总数目: 313
已运行时间: 1541


递归


/**
 * Definition for singly-linked list.
 * function ListNode(val, next) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.next = (next===undefined ? null : next)
 * }
 */
/**
 * @param {ListNode} list1
 * @param {ListNode} list2
 * @return {ListNode}
 */
var mergeTwoLists = function (l1, l2) {
  if (!l1) return l2
  if (!l2) return l1
  if (l1.val < l2.val) {
    l1.next = mergeTwoLists(l1.next, l2);
    return l1;
  } else {
    l2.next = mergeTwoLists(l1, l2.next);
    return l2;
  }
};

暴力解法/迭代

/**
 * Definition for singly-linked list.
 * function ListNode(val, next) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.next = (next===undefined ? null : next)
 * }
 */
/**
 * @param {ListNode} list1
 * @param {ListNode} list2
 * @return {ListNode}
 */
var mergeTwoLists = function (l1, l2) {
  const prehead = new ListNode(-1);

let prev = prehead;
while (l1 != null && l2 != null) {
if (l1.val <= l2.val) {
prev.next = l1;
l1 = l1.next;
} else {
prev.next = l2;
l2 = l2.next;
}
prev = prev.next;
}

// 合并后 l1 和 l2 最多只有一个还未被合并完,我们直接将链表末尾指向未合并完的链表即可
prev.next = l1 === null ? l2 : l1;

return prehead.next;
};

/**
 * Definition for singly-linked list.
 * function ListNode(val, next) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.next = (next===undefined ? null : next)
 * }
 */
/**
 * @param {ListNode} list1
 * @param {ListNode} list2
 * @return {ListNode}
 */
var mergeTwoLists = function (list1, list2) {
  if (!list1) return list2
  if (!list2) return list1
  let temp1 = list2
  while (list2) {
    if (!list1) break
    if (!list2?.next) {
      if (list1.val < list2.val) {
        const temp = list2.next
        list2.next = list1
        list1 = list1.next
        list2.next.next = temp
      } else {
        list2.next = list1
        break
      }
    } else if (list1.val <= list2.next.val) {
      const temp = list2.next
      list2.next = list1
      list1 = list1.next
      list2.next.next = temp
      list2 = list2.next
    } else {
      list2 = list2.next
    }
  }
  const temp2 = temp1
  if (temp1 && temp1.next && temp1.val > temp1.next.val) {
    while (temp1.next && temp1.val > temp1.next.val) {
      const a = temp1.val
      temp1.val = temp1.next.val
      temp1.next.val = a
      temp1 = temp1.next
    }
  }
  return temp2
};

评论区