在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
##举例:
1 2 3
4 5 6
7 8 9
##思路:
因为数组的规律是二维数组由上到下,由左到右递增的。所以只要选取二位数组的其中一个角落开始。,我选取例子中右上角的数字3来进行判断。
1.判断数组大小,用col代表列数,row代表行数
2.利用target与array[0][clo-1]进行遍历判断,如果大于,则行数+1,继续判断,如果是小于则列数-1,否则该数字不在数组array内。
代码如下:
public boolean Find(int target, int [][] array) { if(array.length==0) return false; int col =array[0].length;//列数 int row=array.length;//行数 int i=0; int j=col-1;//遍历数的行数为0,列数为col-1,即是数组右上角元素 while(i<row && j>=0){ if(target>array[i][j]) i++; else if(target<array[i][j])j--; else return true; } return false; } }