public class Solution {
/**
* O(m + n) 时间复杂度
*/
public int searchMatrix(int[][] matrix, int target) {
if(matrix == null || matrix.length == 0) return 0;
if(matrix[0] == null || matrix[0].length == 0) return 0;
int m = matrix.length;
int n = matrix[0].length;
//每次观察右上角的点
int cur_i = 0;
int cur_j = n - 1;
int sum = 0;
while(cur_i<m && cur_j >= 0){
if(matrix[cur_i][cur_j] == target){
sum ++;
cur_j --; //该列不可能再有满足条件的了
}else if(matrix[cur_i][cur_j] > target){
cur_j --; //该列不可能再有满足条件的了
}else{
cur_i ++;//该点比目标点小,说明该行不可能有满足条件的了
}
}
return sum;
}
}[LintCode] 38. Search a 2D Matrix_II
最新推荐文章于 2018-10-14 14:48:09 发布
本文介绍了一种在二维矩阵中寻找特定元素的算法,该算法的时间复杂度为O(m+n),适用于行和列都已排序的矩阵。文章通过具体的Java代码实现展示了如何从矩阵的右上角开始,逐步遍历并找到所有目标值出现的位置。
775

被折叠的 条评论
为什么被折叠?



