zoukankan      html  css  js  c++  java
  • 378. 有序矩阵中第K小的元素





    方法一:二分查找。

    class Solution(object):
        # 二分查找
        def kthSmallest(self, matrix, k):
            """
            :type matrix: List[List[int]]
            :type k: int
            :rtype: int
            """
            n = len(matrix)
            low, high = matrix[0][0], matrix[n - 1][n - 1]
            while low < high:
                # 计算矩阵中值
                mid = low + int((high - low) / 2)
                # 统计小于等于mid的元素个数
                count = 0
                i, j = 0, n - 1
                while j >= 0 and i < n:
                    if matrix[i][j] <= mid:
                        count += j + 1
                        i += 1
                    else:
                        j -= 1
    
                if count < k:
                    low = mid + 1
                else:
                    high = mid
            return low
    

    方法二:暴力解。

    class Solution(object):
        # 代码一
        def kthSmallest(self, matrix, k):
            """
            :type matrix: List[List[int]]
            :type k: int
            :rtype: int
            """
            temp = []
            for i in range(len(matrix)):
                temp += matrix[i]
            temp.sort()
            return temp[k - 1]
    
        # 代码二
        def kthSmallest(self, matrix, k):
            """
            :type matrix: List[List[int]]
            :type k: int
            :rtype: int
            """
            m = len(matrix)
            n = len(matrix[0])
            temp = matrix[0]
            for i in range(1, m):
                for j in range(n):
                    temp.append(matrix[i][j])
            temp.sort()
            return temp[k - 1]
    
  • 相关阅读:
    CSS实现小三角小技巧
    Javascript原型继承 __proto__
    99乘法表
    函数式编程之纯函数
    函数式编程 本质(笔记)转载
    函数式编程之柯里化(curry)
    Javascript-常用字符串数组操作
    第十章
    第九章
    第八章读后感
  • 原文地址:https://www.cnblogs.com/panweiwei/p/13065237.html
Copyright © 2011-2022 走看看