这道题也是需要抓住给的条件,两个递增。我们可以利用右上角或者左下角两个点作为起点,因为这两个点向两个方向有不同的的大小变化,可以更快的剔除不符合条件的行或者列。
代码如下:
class Solution {
public boolean findNumberIn2DArray(int[][] matrix, int target) {
//一定不要忘记代码的鲁棒性
if (matrix == null || matrix.length == 0 || matrix[0].length == 0) return false;
int row = 0, column = matrix[0].length - 1;
while (row < matrix.length && column >= 0) {
if (matrix[row][column] == target) return true;
else if (target > matrix[row][column]) row++;
else column--;
}
return false;
}
}