时间限制:1秒
空间限制:32768K
热度指数:343751
题目描述
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
//解一:二分
//n*logn
public boolean Find(int target, int [][] array) {
int l,r,m;
boolean flag=false;
for(int i=0,n=array.length;i<n;++i){
l=0;
r= array[i].length-1;
m = (l+r)/2;
while(r>=l){
if(array[i][m]==target){
flag = true;
}
if(array[i][m]>target){
r = m-1;
}else{
l = m+1;
}
m = (l+r)/2;
}
if(flag)
break;
}
return flag;
}
//解二
public boolean Find(int target, int [][] array) {
boolean flag = false;
int c= 0;
int r = array[0].length-1;
int n = array.length-1;
while(c<=n&&r>=0){
if(array[c][r]<target){
c++;
}else if(array[c][r]>target){
r--;
}else{
flag = true;
break;
}
}
return flag;
}