lc378.有序矩阵中第K小的元素
目录
378.有序矩阵中第 K 小的元素
- 如何判断一个数
num
在矩阵中处于第k小?从左下角向上移动,如果当前位置matrix[x][y] <= num
,那么说明这一列前面所有的行都比该数小,那么叠加x+1
,列向右移动y+=1
。否则x
向上移动(也就是行向上移动),直到满足matrix[x][y] <= num
或者移动出有序矩阵。 - 知道如何判断一个数处于第k大之后,那么我们可以将
l=matrix[0][0], r=matrix[m-1][n-1]
,对于这个区间内的数字进行二分查找,查找第一个满足处于第k小的元素。 - 这个元素一定在矩阵当中。举例
[1, 2, 4, 10]
,k=3
,对任意数4<=x<10
均满足在矩阵中满足条件的元素个数cnt=3
,但是第一个满足cnt=3
的元素一定是4,因为它包含等于的情况, 也就是它自己。 - $T:O(nlog(r-l))$,
r
是矩阵中的最大值,l
是矩阵中的最小值,n
是矩阵的大小
|
|