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]
    
  • 相关阅读:
    RocketMQ主从搭建
    Spring Cloud Sleuth
    Spring Cloud Eureka
    Nacos配置中心使用
    Nacos注册中心使用
    Nacos快速入门
    Nginx配置SSL
    并发工具类
    关于类的线程安全
    Docker 入门学习笔记(一)
  • 原文地址:https://www.cnblogs.com/panweiwei/p/13065237.html
Copyright © 2011-2022 走看看