class Solution {
public boolean findNumberIn2DArray(int[][] matrix, int target) {
if (matrix.length == 0) return false;
int n = matrix.length, m = matrix[0].length;
int i = 0, j = m - 1;
while (i < n && j >= 0) {
if (matrix[i][j] == target) return true;
if (matrix[i][j] > target) j--;
else i++;
}
return false;
}
}
class Solution {
public boolean findNumberIn2DArray(int[][] matrix, int target) {
if (matrix == null || matrix.length == 0) return false;
int m = matrix.length;
int n = matrix[0].length;
int i = 0;
int j = n - 1;
while(i < m && j >= 0) {
if (matrix[i][j] == target) return true;
if (matrix[i][j] > target) {
j--;
}else {
i++;
}
}
return false;
}
}
共以下 10 个回答
从左下角开始往右上角开始找
利用行列的非递减特点
从左下角或者右上角算起
二分
下面代码
从右上角开始搜索,小于往左,大于往下。时间复杂度O(MN)
时间复杂度为O(n+m),空间复杂度为O(1)