leetcode 有序矩阵中第K小的元素 python

import heapq
class Solution(object):
    def kthSmallest(self, matrix, k):
        nums=heapq.merge(*matrix)
        for i in range(k-1):
            nums.next()
        return nums.next()

别问我,我也不知道发生了什么
使用堆“优化”了一番

import heapq
class Solution(object):
    def kthSmallest(self, matrix, k):
        row_num=len(matrix)
        col_num=len(matrix[0])
        heap=[]
        heapq.heapify(heap)
        def heap_add(num):
            if len(heap)>=k:
                heapq.heappop(heap)
            heapq.heappush(heap,-num)
        for row in matrix:
            if len(heap)>=k and row[0]>=-heap[0]:
                break
            for col in row:
                if len(heap)>=k and col>=-heap[0]:
                    break
                heap_add(col)
        return -heap[0]

速度还没之前快,真他妈不科学啊

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容