378. 有序矩阵中第K小的元素

Posted panweiwei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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]



以上是关于378. 有序矩阵中第K小的元素的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 378. 有序矩阵中第K小的元素 | Python

题目地址(378. 有序矩阵中第 K 小的元素)

378. 有序矩阵中第K小的元素

378. 有序矩阵中第K小的元素(排序或者二分)

378. 有序矩阵中第K小的元素。 ①二分

leetcode.矩阵.378有序矩阵中第K小的元素-Java