题目描述
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
思路:
思路来源讨论。。。
由于从上至下递增,从左至右递增
假定当前位置时 (i, j)
那么 a[ i-1 ] [ j ] < a [ i ] [ j ] (上面小)
a[ i ] [j + 1] > a[ i ] [ j ] (右边大)
解法就是从左下角出发,如果target比当前大,那么就向右走; 如果target比当前小,那么就向上面走。
代码:
public boolean Find(int target, int[][] array) {
int n = array.length;
int m = array[0].length;
int i = n-1,j = 0;
while (i>=0 && j < m){
if (array[i][j] == target) {
return true;
}
if (array[i][j] > target) {
i--;
}else j++;
}
return false;
}