01、在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
解题:
1.目录结构:
2.测试用例:
package offer01;
import static offer01.Offer01_Find.Find;
/**
* 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排列,每一列都按照从上到下递增的顺序排列。
* 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
*/
public class Test_offer01 {
public static void main(String[] args) {
int[][] a = {{1,2,3},{4,5,6},{7,8,9},{10,11,12}};
System.out.println(Find(5,a));
}
}
3.解题方法
package offer01;
class Offer01_Find {
static boolean Find(Integer target, int[][] array){
if (array.length == 0 || array[0].length == 0){
return false;
}
int rows = array.length - 1;
int cols = array[0].length - 1;
int i = 0;
int j = cols;
while(i <= rows && j <= cols){
if (array[i][j] < target){
i++;
}else if (array[i][j] > target){
j--;
}else {
return true;
}
}
return false;
}
}