23. 合并K个升序链表
- 题号:23
- 来源:LeetCode
- 难度:困难
- 标签:
链表排序 - 语言:TypeScript
- 解法:1 个
- 作者:lmliheng
- 最近更新:2026-09-27
TypeScript · O(n*log n) 时间 · O(n) 空间 · 更新于 2026-09-27
取出全部值排序后重建链表,非分治最优
typescript
/**
* @difficulty hard
* @tags 链表,排序
* @time O(n*log n)
* @space O(n)
* @note 取出全部值排序后重建链表,非分治最优
* @23. 合并 K 个升序链表
*/
import { ListNode } from "../JS/DataStructure/ListNode.js";
var mergeKLists = function (lists: ListNode<number>[]) {
let n = lists.length
// let arr = new Array(n).fill(() => [])//fill([]) 防止使用同一地址
let arr: number[][] = Array.from({ length: n }, () => [])
// console.log(arr)
for (let i = 0; i < n; i++) {
let p = lists[i]
while (p) {
arr[i].push(p.val)
p = p.next!
}
}
console.log(arr)
let arr1 = [...arr.flat(2).sort((a, b) => a - b)]
console.log(arr1)
let newHead = new ListNode(0)
let p1 = newHead
for (let i = 0; i < arr1.length; i++) {
p1.next = new ListNode(arr1[i])
p1 = p1.next
}
return newHead.next
};源码:ts/leetcode/23. 合并K个升序链表.ts
在 GitHub 上查看题目所在目录:lmliheng/algorithm