牛客网剑指offer
-
二维数组的比较:在一个二维数组中(每个一维数组的长度相同)
-
每一行都按照从左到右递增的顺序排序
-
每一列都按照从上到下递增的顺序排序。
-
请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
-
算法思路:
-
二维数组每行每列都是按顺序排好的。所以我们选取最左下角的元素,比该元素大的数向右找,比该元素小的元素向上找
-
超过数组的边界则找不到该元素。
-
@author 橙子
-
代码如下:
-
`public class Test1二维数组的查找 {
public static boolean Find(int target, int [][] array) {
// boolean found =true;
int hang=array.length; //hang长
int lie=array[0].length; //lie长
int a=0; //从第一列最后一个元素开始
int b=hang-1;// 最后一行
while(b>=0 && a<lie) {//比这个元素大的向右找,比这个小的向上找
if(target<array[b][a])
b–;
else if(target>array[b][a])
a++;
else
return true;
}
return false;
}public static void main(String[] args) {
int [][] a ={{1,2,8,9},{2,4,9,12},{4,7,10,13},{6,8,11,15}};
System.out.println(Find(21, a));
}
}
`萌新刚起步多谢支持!