【题目】在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。

   请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

【思路】从给定的二维数组,选取最右上角的数target,开始与二维数组中数字进行比较。

arrs[i]<target,,说明选取的数所在的行均小,在下一行进行查询(行+1),相等即为刚好查找的数。

package com.exe1.offer;

/**
* 【题目】在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。
* 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
* 【思路】取二维数组的最右上角的数,与指定数字比较。
* 相等即返回true;
* 大即去掉所在列;
* 小即去掉所在行。
* @author WGS
*
*/
public class ArraysSearchElement {
public boolean getElementFromMatrix(int[][] arr,int num){
int rows=arr.length;
int columns=arr[0].length;
int i=0,j=columns-1;
boolean flag=false;
while(i<rows&& j>=0){
if(arr[i][j]>num){
--j;
}else if(arr[i][j]<num){
++i;
}else{
flag= true;
break;
}
}
return flag;

}
public static void main(String[] args){
int[][] arrays=new int[4][4];
arrays[0]=new int[]{1,2,8,9};
arrays[1]=new int[]{2,4,9,12};
arrays[2]=new int[]{4,7,10,13};
arrays[3]=new int[]{6,8,11,15};
boolean b=new ArraysSearchElement().getElementFromMatrix(arrays,8);
System.out.println("是否找到对应的数字"+b);


}
}