leetcode21-合并两个有序链表
leetcode 21
🔍 思路:
-
创建一个虚拟头节点,用一个指针 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;}
}