题目描述
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
题解
从右上角开始查找,如果目标值小于该值,则将列值减一;如果目标值大于该值,则将行值加一;如果二者相等,则直接返回。每次比较过程中可以缩小一行或一列的范围。
public boolean Find(int target, int [][] array) {
if (array == null){
return false;
}
int cow = array.length - 1;
int col = array[0].length - 1;
int i = 0;
while (i <= cow && col >= 0){
if (target == array[i][col]){
return true;
}else if (array[i][col] > target){
col--;
}else {
i++;
}
}
return false;
}