合并 k 个升序的链表并将结果作为一个升序的链表返回其头节点。

题目理解:K个链表、升序链表、合并

【k个】-使用特殊数据结构

解题思路:

  1. 链表操作问题:
  • 解题工具:二叉堆(优先级队列)
  • 操作方法:构造一棵二叉最小堆
  1. 构造过程:
  • 引入heapq模块,使用封装函数heaphash(),heappop()进行添加、删除
import heapq
function heaphash() # 添加元素,并保持heap的结构
function heappop # 删除元素,并保持heap结构
  • 利用输入的升序性质
# 首先将每个list的头节点加入heap
heaphash(head, (lists[i], i)); 
lists[i] = lists[i].next
# 然后使用While 遍历二叉堆,同时完成新链表构建和待排序元素的添加