题目要求:
分析:
要找到一个数,我们要找到一个递增的地方和一个递减的地方来夹击查找,在这里,从矩阵的右上角或左下角开始分析。
就拿矩阵的右上角来举例子,往左是递减的,往下它是递增的,那么我们就可以根据target与matrix[m][n]的大小关系来确定target的位置了:
- 当target >= matrix[m][n]时,就往下走,因为往下是递增的数;
- 当target < matrix[m][n]时,就往左走,因为往左是递减的数。
如果是从左下角开始走,也是同理。
具体代码如下:
class Solution {
public boolean searchMatrix(int[][] matrix, int target) {
if(matrix == null || matrix.length == 0 || matrix[0].length == 0)
return false;
int m = 0, n = matrix[0].length - 1;
while(m < matrix.length && n >= 0) {
if(matrix[m][n] == target) {
return true;
} else if(matrix[m][n] > target) {
n --;
} else {
m ++;
}
}
return false;
}
}