题目:
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
public boolean find(int target, int[][] array){
/*
* 总体思路:数组是有序的,即每一行,右边的都大于左边的,
* 每一列,下面的都大于上面的,
* 因此:可以从数组的右上角,或者是数组的左下角开始进行比较,
* 以从右上角开始比较为例。
* 如果target大于右上角的数,则说明包含次数的这一行中左边的数都比target小,应该到下一列去比较。
* 如果target小于右上角的数,则说明包含次数的这一列中下面的数都比target大,应该到左边一列去比较。
*
*/
//求出该数组几行几列
int row = array.length; //行数
int column = array[0].length; //列数
//i,j表示与target相比较数的下标
int i = 0;
int j = column - 1;
while(i<=row-1 && j >= 0){
if(target > array[i][j]){
i++;
}else if(target < array[i][j]){
j--;
}else if(target == array[i][j]){
return true;
}
}
return false;
}
我们一起努力吧,QQ群(478705720)海量的书籍,视频,源码资料,丰富的求职内推信息,分享给正在努力奋斗的你!成功路上,我们风雨同行!