方法1:通过优先级队列,不是把所有节点塞进去。只把每个链表的头节点放进去。
方法2:归并排序(还未实现)
方法3:直接遍历所有节点,排序,重新输出节点。
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def mergeKLists(self, lists: List[ListNode]) -> ListNode:
q=[]
for i in range(len(lists)):
if lists[i]:
heapq.heappush(q,(lists[i].val,i))
lists[i]=lists[i].next
dummy=ListNode(0)
node=dummy
while q:
val,idx=heapq.heappop(q)
node.next=ListNode(val)
node=node.next
if lists[idx]:
heapq.heappush(q,(lists[idx].val,idx))
lists[idx]=lists[idx].next
return dummy.next