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;
};