题解 | #合并k个已排序的链表#

合并k个已排序的链表

https://www.nowcoder.com/practice/65cfde9e5b9b4cf2b6bafa5f3ef33fa6

import heapq

class ListNode:
    def __init__(self, x):
        self.val = x
        self.next = None

class Solution:
    def mergeKLists(self, lists):
        # 创建一个优先队列
        min_heap = []
        # 初始化,将k个链表的首节点放入优先队列
        for idx, node in enumerate(lists):
            if node:
                heapq.heappush(min_heap, (node.val, idx, node))
        
        # 创建一个哑节点,这将会是合并后链表的头节点的前驱
        dummy = ListNode(0)
        current = dummy
        
        # 当优先队列不为空,循环执行
        while min_heap:
            # 弹出最小元素
            val, idx, node = heapq.heappop(min_heap)
            # 将当前最小节点加入到合并后的链表
            current.next = node
            current = current.next
            # 如果弹出的节点的下一个节点非空,将其加入到优先队列中
            if node.next:
                heapq.heappush(min_heap, (node.next.val, idx, node.next))
        
        # 返回合并后的链表的头节点
        return dummy.next

全部评论

相关推荐

点赞 评论 收藏
分享
05-12 17:00
门头沟学院 Java
king122:你的项目描述至少要分点呀,要实习的话,你的描述可以使用什么技术,实现了什么难点,达成了哪些数字指标,这个数字指标尽量是真实的,这样面试应该会多很多,就这样自己包装一下,包装不好可以找我,我有几个大厂最近做过的实习项目也可以包装一下
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务