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

合并k个已排序的链表

https://www.nowcoder.com/practice/65cfde9e5b9b4cf2b6bafa5f3ef33fa6?tpId=295&tqId=724&ru=/exam/oj&qru=/ta/format-top101/question-ranking&sourceUrl=%2Fexam%2Foj

# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param lists ListNode类一维数组
# @return ListNode类
#
import heapq
class Solution:
    def mergeKLists(self, lists: list[ListNode]) -> ListNode:
        # write code here
        dummy=ListNode(-1)
        p=dummy
        head=[

        ]
        for i in range(len(lists)):
		  #如果listsi为真,将i在List中的索引和i中链表的值添加到堆中,这一步实际上将2个链表的头结点添加入堆中了
            if lists[i]:
                heapq.heappush(head,(lists[i].val,i)
                )
                lists[i]=lists[i].next
        

        while head:
		  #当Head为真的时候,取出堆顶的元素
            val,idx =heapq.heappop(head)
			#构建新的链表节点并将p指向新节点,然后将新节点命名为p
            p.next=ListNode(val)
            p=p.next
			#。
            if lists[idx]:
                heapq.heappush(head,(lists[idx].val,idx))
                lists[idx]=lists[idx].next
        return dummy.next

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-04 18:02
好不容易拿到了字节Offer,鼠鼠做后端的,但家里人觉得可能被裁员不稳定,让鼠鼠去投国企,现在好纠结到底该咋选
文档传偷助手:该投就投吧,不过建议别放弃offer 拿到手里的才是最好的
投递字节跳动等公司8个岗位
点赞 评论 收藏
分享
人力小鱼姐:实习经历没有什么含金量,咖啡店员迎宾这种就别写了,其他两段包装一下 想找人力相关的话,总结一下个人优势,结合校园经历里有相关性的部分,加一段自我评价
点赞 评论 收藏
分享
程序员小白条:你是沟通了900个,不是投了900份简历,你能投900份,意味着对面都要回复你900次,你早就找到实习了,没亮点就是这样的,别局限地区,时间投的也要早,现在都要7月了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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