# 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:
        # write code here
        dummy = ListNode(0)
        head = dummy#哑巴节点,确保头节点同样可操作
        lst = []
        for cur in lists:#去除原链表列表中的空链表元素
            if cur:
                lst.append(cur)
        while lst:
            lst.sort(key=lambda x:x.val,reverse=True)#降序排列,弹出最小的节点
            p = lst.pop()
            head.next = p
            head = head.next
            if p.next:#节点处理完后
                lst.append(p.next)
        head.next = None
        return dummy.next