题目大意
https://leetcode.com/problems/kth-smallest-element-in-a-sorted-matrix/
矩阵每行和每列都是从小到大排好序的,求第k小的元素
题目分析
本题可以使用堆,但是最优的方法是二分答案法,答案的区间就是在matrix[0][0]
到matrix[n-1][n-1]
之间,本题等价于求matrix中排序小于等于k的最大值,因此check方法就是求:如果v在matrix排序小于等于k就返回true,否则返回false。注意check方法中v和matrix[i][j]
比较的处理,三种情况都要分别算,还有matrix中实际上会有重复的元素,check检测的是值为v的元素在matrix中排序以后的最小排名小于等于k就返回true
代码
|
|
算法复杂度:O(n * log(矩阵最大值 - 矩阵最小值)) n为正方形的长度