您的位置:首页 > Web前端

剑指offer——二维数组中的查找

2017-08-21 19:47 204 查看
//要求:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

//思路:根据题意,得到一个元素从左到右,从上到下分别递增的矩阵。而如果我们用常规思路从从单纯地从第一行第一列去遍历,那肯定不是考察的目标。

//我们可以想到,如果从最后一行,第一列的元素去遍历,那么此时当我们发现目标元素比当前元素小时,我们的当前元素就切换到它的上一个元素(比当前元素小),然后再进行比较。而目标元素比当前元素大时,我们的当前元素就切换到它的右边一个元素(比当前元素大),那么这样,我们就在每次比较后有了明确的搜索方法,而不是傻傻地一行行地搜索下来,是不是很巧妙!!

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(target<array[0][0] || target>array[rows-1][columns-1])
return false;
int i=rows-1,j=0;
while(i>=0 && j<columns){
if(array[i][j]==target){
return true;
}
else if(array[i][j]>target){
i--;
}
else{
j++;
}
}
return false;
}

public static void main(String[] args)
{
int[][] array=new int[0][2];

System.out.println(Find(16,array));
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: