创建一个虚拟头节点,用一个指针 current 指向它
每次比较 list1 和 list2 的头部,谁小就连接到 current.next
然后更新current和list1 list2,每次设置了一个以后list要往后移动
最后把 current.next 指向未处理完的链表部分即可
时间复杂度:O(n + m) 空间复杂度:O(1)
可以参考大佬视频:https://www.bilibili.com/video/BV17w4m1Y7CJ/?spm_id_from=333.337.search-card.all.click&vd_source=ccb42000243a376a86b435878466ec00
var mergeTwoLists = function (list1, list2) {
// 创建一个虚拟头节点
let head = new Nodelist();
let cur = head;
while (list1 && list2) {
if (list1.val <= list2.val) {
cur.next = list1;
list1 = list1.next;
} else {
cur.next = list2;
list2 = list2.next;
}
cur = cur.next;
}
cur.next = list1 || list2;
return head.next;
};
class Nodelist {
constructor(val) {
this.val = val;
this.next = null;
}
}