# 23. 合并 K 个升序链表
给你一个链表数组,每个链表都已经按升序排列。
请你将所有链表合并到一个升序链表中,返回合并后的链表。
# 解题思路
- 暴力法
每次找到两个最小的链表,合并后插入到结果链表中。
var mergeKLists = function (lists) {
if (lists.length === 0) return null
let head = null
let newList = lists.filter((item) => {
if (item) head = item
return item
})
if (!head) return null
head = null
let curr = null
while (newList.length) {
let nextNode = null
let idx = -1
newList.forEach((item, i) => {
if (!nextNode || item.val < nextNode.val) {
nextNode = item
idx = i
}
})
if (!head) {
head = curr = nextNode
} else {
curr.next = nextNode
curr = nextNode
}
newList[idx] = newList[idx].next
nextNode.next = null
newList = newList.filter((item) => item)
}
return head
}
其它解法参考官方题解 (opens new window)。