假设当前位置是最左下角,坐标[i-1,0]。它是行最大,列最小的值。
当满足行>=0,列< col时寻找:
[i][j]<tar:col++;
[i][j]>tar row--;
java代码:
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;
if(m==0||n==0) return false;
int row=m-1,col=0;
while(row>=0&&col<n){
if(matrix[row][col]==target) return true;
else if(matrix[row][col]<target) col++;
else row--;
}
return false;
}
}
时间复杂度:O(m+n)
空间复杂度: O(1)