题目

https://leetcode-cn.com/problems/kth-smallest-element-in-a-sorted-matrix/
题目
方法一
合并成一个一维数组之后排序,取出第k个。
方法二
二分查找。
由于矩阵是有排序关系的,任意取一个数num,该数在矩阵最小值和最大值之间,那么该数定可以把矩阵分成左右两半部分。左半部分是小于num的数,进一步可以把小于num的数的数量统计出来。右半部分同理。
可以二分去搜索这个数。
代码
class Solution:def kthSmallest(self, matrix: List[List[int]], k: int) -> int:n = len(matrix)def check(mid):i, j = n - 1, 0num = 0while i >= 0 and j < n:if matrix[i][j] <= mid:num += i + 1j += 1else:i -= 1return num >= kleft, right = matrix[0][0], matrix[-1][-1]while left < right:mid = (left + right) // 2if check(mid):right = midelse:left = mid + 1print(mid, left, right)return left
