问题描述:
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序,输入一个二维数组以及一个值,看值是否在二维数组之中
解题思路:
每次查找查找最右上角,如果查找的数等于目标值,则返回;如果查找的值小于目标值,放弃这一行,如果查找的值大于目标值,放弃该列。
代码如下:
public class ArrayFind {
public ArrayFind() {
}
public static boolean Find(int target, int [][] array) {
//每次查找查找最右上角
//如果查找的数等于目标值,则返回
//如果查找的值小于目标值,放弃这一行,如果查找的值大于目标值,放弃该列
int rows=array.length; //得到行数
for(int i=0;i<rows;i++){
int colums=array[i].length; //此行的列数
for (int j=0;j<colums;j++){
if(array[i][colums-1-j]==target){
//如果查找的值是目标返回true
return true;
}else if(array[i][colums-1-j]>target){ //大于目标,抛弃该行
continue;
}else if (array[i][colums-1-j]<target){ //右上角小于目标。抛弃该列
continue;
}
}
}
return false;
}
public static void main(String[] args) {
//定义二维数组
int [][] array={
{1,3,4,5,6},
{2,4,5,6,7},
{3,6,7,8,9},
{4,8,9,10,12}
};
//System.out.println(array[0][4]);
System.out.println(Find(10,array));
}
}
网友评论