方法:优先队列
这里需要注意heapq的引入,因为leetcode版本默认import, 但是在其他的IDE上需要:import heapq
heapq是对的意思, 最常用的是最为优先队列,是目前最好的方法。
可以大大降低时间。
method: pq
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def mergeKLists(self, lists: List[ListNode]) -> ListNode:
# pq
pq = []
q = dummy = ListNode(0)
for item in lists:
p = item
while p:
heapq.heappush(pq, p.val)
p = p.next
while pq:
val = heapq.heappop(pq)
q.next = ListNode(val)
q = q.next
return dummy.next