21/23. Merge 2/k Sorted Lists

合并k个链表,使用堆结构。

    def mergeKLists(self, lists):
        """
        :type lists: List[ListNode]
        :rtype: ListNode
        """
        import heapq
        pq = []
        for i in range(len(lists)):
            if lists[i]:
                # 此处调用.val,注意需要先判定node不为空
                heapq.heappush(pq, (lists[i].val, lists[i]))

        dummy = ListNode(-1)
        cur = dummy
        while pq:
            pair = heapq.heappop(pq)
            _, root = pair
            cur.next = root
            cur = cur.next
            if root.next:
                heapq.heappush(pq, (root.next.val, root.next))
        return dummy.next
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容