/**
* 题目:
* 在一个二维数组中,每一行都按照从左到右递增的顺序排序,
* 每一列都按照从上到下递增的顺序排序。请完成一个函数,
* 输入这样的一个二维数组和一个整数,判断数组中是否含有该整数
* */
/**
先理解一下题意吧:
输入:1、一个二维数组,这个二维数组是排好序的--每一行都按照从左到右递增,每一列都按照从上到下递增;2、一个整数
输出:判断整数是否包含在这个二维数组中;
true:包含 false:不包含
*/
/**
* 解题思路:
* 1 2 3
* 4 5 6
* 7 8 9
* 矩阵是有序的,从左下角来看,向上数字递减,向右数字递增;
* 因此从左下角开始查找,当要查找数字比左下角数字大时——右移
* 要查找数字比左下角数字小时——上移
* */
public class FindForArrays {
public boolean Find(int target, int [][] array) {
int rowCount = array.length;
int colCount = array[0].length;
int i,j;
for(i=rowCount-1,j=0;i>=0&&j<colCount;)
{
if(target == array[i][j])
return true;
if(target < array[i][j])
{
i--;
continue;
}
if(target > array[i][j])
{
j++;
continue;
}
}
return false;
}
public static void main(String[] args) {
FindForArrays find = new FindForArrays();
int target = 6;
int[][] array = {{1,3,5},{3,4,6},{7,8,9},{8,9,10}};
boolean f = find.Find(target, array);
System.out.println(f);
}
}
输出:
true