思路没什么问题,但是用for写的乱七八糟,也没有进行边界判断
直接用while写更简洁
class Solution {
public boolean findNumberIn2DArray(int[][] matrix, int target) {
if(matrix.length == 0 || matrix[0].length == 0 || matrix == null) return false;
int rows = matrix.length,columns = matrix[0].length;
int row = 0, column = columns - 1;
while(row < rows && column >=0){
int num = matrix[row][column];
if(num == target) return true;
if(num < target) row++;
if(num > target) column--;
}
return false;
}
}
还有一种看成树的方法,其实也是比较大小,没有用到树的写法,写法更加简洁了,本质还是一行一行排除