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

合并k个已排序的链表

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

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

        def check_min_index(lists_: list[ListNode]):            # 返回链表列表中中的最小值的索引
            return sorted(list(enumerate(lists_)), key=lambda _x: _x[1].val)[0][0]
        
        tmphead = node = ListNode(-1)
        
        # 去除 lists 中的空节点
        newlists = []
        for i in range(len(lists)):
            if lists[i] is not None:
                newlists.append(lists[i])
        # 合并链表
        while newlists:
            min_index = check_min_index(newlists)
            node.next = newlists[min_index]
            node = node.next
            newlists[min_index] = newlists[min_index].next
            if newlists[min_index] is None:
                newlists.remove(newlists[min_index])
        
        return tmphead.next

全部评论

相关推荐

今天 11:11
已编辑
Imperial College London Java
汇丰科技 oc 18*12 + 年终
点赞 评论 收藏
分享
一名愚蠢的人类:多少games小鬼留下了羡慕的泪水
投递荣耀等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务