题目描述
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
思路分析
由题意可知,把该数组看做一个矩阵,则左上角array[0][0]为最小元素,右下角array[n][n]为最大元素。
由此,选取左下角作为起点,开始遍历,因为从左下往上是递减,往右是递增,可避免多余的遍历
代码
public boolean Find(int target, int [][] array) {
int m = 0;
int n = array[0].length-1;
if (array.length==0 || n==0) {
return false;
}
while (n>=0 && m<=array.length-1){
if (target < array[m][n]) {
n--;
}
else if (target > array[m][n]) {
m++;
}
else {
return true;
}
}
return false;
}
结果