剑指offer——二维数组中的查找//要求:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
//思路:根据题意,得到一个元素从左到右,从上到下分别递增的矩阵。而如果我们用常规思路从从单纯地从第一行第一列去遍历,那肯定不是考察的目标。
//我们可以想到,如果从最后一行,第一列的元素去遍历,那么此时当我们发现目标元素比当前元素小时,我们的当前元素就切换到它的上一个元素(比当前元素小),然后再进行比较。而目标元素比当前元素大时,我们的当前元素就切换到它的右边一个元素(比当前元素大),那么这样,我们就在每次比较后有了明确的搜索方法,而不是傻傻地一行行地搜索下来,是不是很巧妙!!
public class 二维数组中的查找 {
public static boolean Find(int target, int [][] array) {
int rows=array.length;
if(rows<=1){
return false;
}
int columns=array[0].length;
if(targetarray[rows-1][columns-1])
return false;
int i=rows-1,j=0;
while(i>=0 && jtarget){
i--;
}
else{
j++;
}
}
return false;
}
public static void main(String[] args)
{
int[][] array=new int[0][2];
System.out.println(Find(16,array));
}
}