题目
合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。
解题
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
import heapq
class Solution:
def mergeKLists(self, lists: List[ListNode]) -> ListNode:
k=len(lists)
heap=[]
pre=ListNode(0)#用于构成返回链表的头节点
cur=pre
node=ListNode(0)#用于访问lists的头节点
for i in range(k):
node.next=lists[i]
while node.next:
node = node.next
heapq.heappush(heap,node.val)#存入堆的元素只能是数值,不能是链表的节点,所以是node.val
while heap:
b=heapq.heappop(heap)
cur.next=ListNode(b)#将返回的int型变量转换为链表的结点型,然后不断先后
cur=cur.next
return pre.next
链接:https://leetcode-cn.com/problems/merge-k-sorted-lists/solution/you-xian-dui-lie-jie-jue-jian-dan-yi-dong-by-blaok/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。