leetcode23-合并K个升序链表
leetcode 23
思路
- 遍历所有链表收集节点:将每个链表的节点断开其 next 指针后存入数组
- 对数组进行排序:使用 JavaScript 的内置 sort 方法对节点数组按值排序
- 重新连接排序后的节点:遍历排序后的数组,依次连接每个节点形成新链表
时间复杂度:O (n log n) 空间复杂度:O (n)
实现
var mergeKLists = function (lists) {const arr = [];for (let i = 0; i < lists.length; i++) {let cur = lists[i];while (cur) {const node = cur.next;cur.next = null;arr.push(cur);cur = node;}}if(!arr.length) return null;// 排序arr.sort((a, b) => a.val - b.val)let head = arr[0];let cur = head;for (let i = 1; i < arr.length; i++) {cur.next = arr[i]cur = cur.next;}return head;
};