/*
* 题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。
* 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
*
* 思路:每一行,下面的比上面的大,每一列右边的比左边的大。
* 从左下角开始,如果目标比开始位置的数小,则行坐标上移-1,如果比开始的位置大,列坐标右移+1
*
* 如果是正方形,最多循环n+m次,算法的时间复杂度为线性o(max(n,m))
*/
public classmetrixfind {
publicstaticbooleanFind(int[][]array,inttarget)
{
/*二维数组的行数和列数*/
int rowCount = array.length;
int colCount = array[0].length;
int i, j;//i指定行的变化,j指定列的变化
//循环
for (i = rowCount - 1, j = 0; i >= 0&& j<colCount;)
{
if (target == array[i][j])
returntrue;
if (target<array[i][j])
{
i--;
continue;
}
if (target>array[i][j])
{
j++;
continue;
}
}
return false;
}
publicstaticvoidmain(String args[]){
int[][] array={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};
System.out.println(Find(array,0));
}
}