/*
*
* 题目描述
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
示例1
输入
7,[[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]
返回值
true
*
* */
public class FindInArray {
public boolean Find(int target, int [][] array) {
int length = array[0].length;//获取每行的长度
int length1 = array.length;
if(length<=0||length1<=0){//注意特殊情况
return false;
}
if(array==null){ //注意特殊情况
return false;
}
for(int i =0; i
if(target
//如果小于每行最大的那个
//折半查找
if(binaryFind(array[i],target)){
return true;
}
}else if(target==array[i][length-1]){
return true;
}
}
return false;
}
public boolean binaryFind(int[] a, int tar){
//折半查找
if(a.length==0){
return false;
}
int low = 0;
int high = a.length-1;
int center = (low + high) / 2;
while(low <= high){
if(tar==a[center]){
return true;
}else if(tar>a[center]){
//往右找
low = center+1;
center = (low + high) / 2;
}else if(tar
//往左找
high = center-1;
center = (low + high) / 2;
}
}
return false;
}
}