zoukankan      html  css  js  c++  java
  • leetcode 378. Kth Smallest Element in a Sorted Matrix

    Given a n x n matrix where each of the rows and columns are sorted in ascending order, find the kth smallest element in the matrix.

    Note that it is the kth smallest element in the sorted order, not the kth distinct element.

    Example:

    matrix = [
       [ 1,  5,  9],
       [10, 11, 13],
       [12, 13, 15]
    ],
    k = 8,
    
    return 13.
    

    Note:
    You may assume k is always valid, 1 ≤ k ≤ n2.

    #! /usr/bin/evn python
    #coding:utf-8
    
    from heapq import heappush, heappop
    
    class MinQ(object):
        def __init__(self):
            self.h = []
        
        def push(self, value):
            heappush(self.h, value)
        
        def pop(self):
            return heappop(self.h)
    
    
    class Solution(object):
        def kthSmallest(self, matrix, k):
            """
            :type matrix: List[List[int]]
            :type k: int
            :rtype: int
            """
            assert matrix
            rows_cnt = len(matrix)
            min_q = MinQ()
            for j,c in enumerate(matrix[0]):
                min_q.push([c, 0, j])
            n = 1
            val = None
            while n <= k:
                val = min_q.pop()
                i,j = val[1]+1, val[2]
                if i < rows_cnt:
                    min_q.push([matrix[i][j], i, j])
                n += 1
            return val[0]
                

    骚年,牢记最小堆的实现!

  • 相关阅读:
    省选测试13
    省选测试12
    省选测试11
    省选测试9
    省选测试10
    省选测试8
    省选测试7
    省选测试6
    倍增 LCA && ST表
    博客园markdown
  • 原文地址:https://www.cnblogs.com/bonelee/p/6143089.html
Copyright © 2011-2022 走看看