# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param lists ListNode类一维数组
# @return ListNode类
#
class Solution:
def mergeKLists(self , lists: List[ListNode]) -> ListNode:
import heapq
root=None
newlist=None
l=[(k.val,idx) for idx, k in enumerate(lists) if not k is None]
heapq.heapify(l)
while l:
vt=heapq.heappop(l)
if not newlist:
newlist=root=ListNode(vt[0])
else:
newlist.next=ListNode(vt[0])
newlist=newlist.next
if lists[vt[1]].next:
n=lists[vt[1]].next
lists[vt[1]]=lists[vt[1]].next
heapq.heappush(l,(n.val,vt[1]))
return root