001二维数组中的查找
题目:
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
方法:观察规律法
思路:一行中从左到右是依次增加的,一列中从上到下是依次增加的,于是我们可以选定最右上角的地方来进行判断,如果被查找的数字小于右上角的数字,就将这一列除去,如果被查找的数字大于右上角的数字,就将这一行除去,如果相等则返回true,不对就继续判断
代码:
public boolean Find(int target, int [][] array) {
if(array==null||array.length==0) return false;
boolean isFind = false;
int rows = array.length;
int columns = array[0].length;
int row = 0;
int column=columns-1;
while(row<rows&&column>=0){
if(array[row][column]==target){
isFind=true;
return isFind;
}else if(array[row][column]>target){
column--;
}else{
row++;
}
}
return isFind;
}