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
最新推荐文章于 2025-05-20 18:28:23 发布