qidao123.com技术社区-IT企服评测·应用市场
标题:
【LeetCode 热题100】23:归并 K 个升序链表(详细解析)(Go语言版)
[打印本页]
作者:
西河刘卡车医
时间:
2025-4-17 21:26
标题:
【LeetCode 热题100】23:归并 K 个升序链表(详细解析)(Go语言版)
LeetCode 热题 23:归并 K 个升序链表(详细解析)
标题描述
LeetCode 23. Merge k Sorted Lists
给你一个链表数组,每个链表都已经按升序分列。
请你将所有链表归并到一个升序链表中,返回归并后的链表。
<hr>
示例 1:
输入:lists = [[1,4,5],[1,3,4],[2,6]]
输出:[1,1,2,3,4,4,5,6]
复制代码
示例 2:
输入:lists = []
输出:[]
复制代码
示例 3:
输入:lists = [[]]
输出:[]
复制代码
<hr>
解题思绪一:优先队列(最小堆)
利用最小堆(Priority Queue)维护 k 个链表的头节点,每次取堆顶最小值节点,接入结果链表。
✅ 步调解析
初始化最小堆,将每个非空链表的头节点入堆。
不停从堆中弹出最小值节点,将其参加结果链表。
如果弹出的节点有 next 节点,则将 next 节点入堆。
最后返回结果链表头部。
<hr>
Go 实现(利用 heap 接口)
type ListNode struct {
Val int
Next *ListNode
}
type NodeHeap []*ListNode
func (h NodeHeap) Len() int {
return len(h) }
func (h NodeHeap) Less(i, j int) bool {
return h[i].Val < h[j].Val }
func (h NodeHeap) Swap(i, j int) {
h[i], h[j] = h[j], h[i] }
func (h *NodeHeap) Push(x interface{
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 qidao123.com技术社区-IT企服评测·应用市场 (https://dis.qidao123.com/)
Powered by Discuz! X3.4