Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution(object):
def mergeKLists(self, lists):
"""
:type lists: List[ListNode]
:rtype: ListNode
"""
mh = [(x.val, x) for x in lists if x != None]
heapq.heapify(mh)
head = ListNode(0)
prev = head
while mh:
prev.next = heapq.heappop(mh)[1]
prev = prev.next
if prev.next != None:
heapq.heappush(mh, (prev.next.val, prev.next))
return head.next