Linked List - Merge k Sorted Lists

LeetCode 23

x# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

from queue import PriorityQueue

class Solution:
    def mergeKLists(self, lists):
        """
        :type lists: List[ListNode]
        :rtype: ListNode
        """

        que = PriorityQueue()
        count = 0
        node = None           
        for node in lists:
            while node:
                # python 3.x 後 PriorityQueue 改成利用 obj1 < obj2 來比較大小
                # 而非 cmp(ob1, ob2), 此舉導致物件與物件無法比大小
                # 為了解決這種狀況, 需加入一中間元素
                ( priority, *可以用來判別大小的元素 e.g. count*, task) 
                que.put((-node.val, count, node))           
                count = count + 1
                node = node.next
        
        next_node = None        
        while not que.empty():         
            node = que.get()[2]
            node.next = next_node
            next_node = node
        return node 

Last updated