右上往左下一个个查找,当前数比target大,肯定在j左侧j–,当前数比target小,肯定在下面i++;
时间复杂度O(n+m),空间复杂度O(1)
public class Solution {
public boolean Find(int target, int [][] array) {
if (array == null || array.length == 0 || array[0].length == 0) {
return false;
}
int i = 0, j = array[0].length - 1;
while (i < array.length && j >= 0) {
if (array[i][j] < target) {
i++;
} else if (array[i][j] > target) {
j--;
} else {
return true;
}
}
return false;
}
}