Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.
use priority queue will take O(n) time cause get max from priority will only take O(1)
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, x):
# self.val = x
# self.next = None
from Queue import PriorityQueue
class Solution(object):
def mergeKLists(self, lists):
"""
:type lists: List[ListNode]
:rtype: ListNode
"""
dummyHead = ListNode(None)
currentNode = dummyHead
queue = PriorityQueue()
for list_ in lists:
if list_:
queue.put((list_.val, list_))
while queue.qsize():
node = queue.get()[1]
currentNode.next = node
currentNode = currentNode.next
if node.next:
queue.put((node.next.val, node.next))
return dummyHead.next
1013



被折叠的 条评论
为什么被折叠?



