题目描述
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数
public class Solution {
public boolean Find(int target, int [][] array) {
if(array==null||array.length==0||(array.length==1&&array[0].length==0))return false;
//数组横向长度
int len1=array[0].length;
//数组纵向长度
int len2=array.length;
int max=array[len2-1][len1-1];
int min=array[0][0];
if(target<min||target>max) {
return false;
}
else {
for(int i=0;i<len2;i++) {
for(int j=len1-1;j>=0;j--) {
if(target==array[i][j]) {
return true;
}
else if(target>array[i][j]) {
break;
}
}
}
return false;
}
}
}
因为右上角为每行最大本列最小,所以从此开始比较即可。注意二维数组的取值范围 在array[0][0]——array[len2-1][len1-1]