题目链接378. 有序矩阵中第 K 小的元素中等算法原理解法二分查找双指针0ms击败100.00%时间复杂度O(NlogN)①目标变量x②目标条件求最小x使得≤x的数k个③转换逻辑≤mid的数是否≥k个具体步骤①确定边界leftmatrix[0][0]题目范围内最小值为matrix[0][0]rightmatrix[n-1][n-1]题目范围内最大值为matrix[n-1][n-1]②确定二分模型x ↑ 比x小的数 ↑ 呈正相关单调由于我们的目标是找最小的x使得≤x的值≥k个求最小因此采用最左端点模型③check方法设计计算矩阵里≤mid的数量是否≥k如何计算数量呢做法跟下题是一样的A.每日一题——240. 搜索二维矩阵 II图解如下Java代码class Solution { public int kthSmallest(int[][] matrix, int k) { int nmatrix.length; int leftmatrix[0][0],rightmatrix[n-1][n-1]; while(leftright){ int midleft(right-left)/2; if(!check(mid,matrix,k)) leftmid1; else rightmid; } return left; } //判断≤mid的数量是否≥k private boolean check(int mid,int[][] matrix,int k){ int mmatrix.length,cnt0; int row0,colmatrix[0].length-1; while(rowmcol0){ if(matrix[row][col]mid){ cnt(col1); row; } else col--; } return cntk; } }