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

本文介绍了一种使用优先队列合并K个已排序链表的方法,并将其整合为一个单一的排序链表。该方法的时间复杂度为O(n),适用于需要高效合并多个排序链表的应用场景。
1457

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



