题目描述
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
public boolean Find(int target, int [][] array) {
if (array == null && array.length <= 0)
return false;
int m,n,rowSize,colSize;
rowSize = array.length;//行数
colSize = array[0].length;//列数
m = rowSize -1;
n = 0;
while(n<=colSize-1&&m>=0){
if(target<array[m][n]){
m--;
}else if(target>array[m][n]){
n++;
}else{
return true;
}
}
return false;
}
解题思路:
首先我们选择从左下角开始搜寻,(为什么不从左上角开始搜寻,左上角向右和向下都是递增,那么对于一个点,对于向右和向下会产生一个岔路;如果我们选择从左下脚开始搜寻的话,如果大于就向右,如果小于就向下),其实左下角和右上角的实现效果是一样的。
网友评论