题目描述
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
代码1:
public boolean Find(int target, int [][] array) {
boolean findResult = false;
if(!(array==null||array.length==0||(array.length==1&&array[0].length==0))){
for(int i = 0; i < array.length; i++){
if(array[i][0] <= target){
for(int j = 0; j < array[0].length; j++){
if(array[i][j]==target){
findResult = true;
}
}
}
}
}
return findResult;
}
代码2(优化后):
/**
*
* 从左下角开始查找,当要查找数字比左下角数字大时,右移
* 要查找数字比左下角数字小时,上移
*/
public boolean Find(int target, int [][] array) {
boolean findResult = false;
int length = array.length-1;
int i = 0;
while((length>=0)&&(i<array[0].length)){
if(array[length][i]>target){length--;}
else if(array[length][i]<target){i++;}
else return true;
}
return false;
}
归纳总结:
二维数组判断非空的三种情况:
1. array==null;
2. array.length==0;
3. array.length==1&&array[0].length==0);针对–>“{{}}”