题目描述
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
public class Solution {
public boolean Find(int target, int [][] array) {
int row=array.length ;
int cols=array[0].length;
int i=row-1;
int j=0;
while(i>=0 && j<cols)
{
if(target>array[i][j])
j++;
else if(target<array[i][j])
{
i--;
}
else {
return true;
}
}
return false;
}
}
main函数
public static void main(String[] args) {
// TODO Auto-generated method stub
Solution s = new Solution();
int[][] array=new int[3][3];
int temp=1;
for(int i=0;i<array.length;i++)
{
for(int j=0;j<array[0].length;j++)
{
array[i][j]=temp;
temp++;
}
}
boolean flag=false;
flag=s.find(4,array);
System.out.println(flag);
}
思路:每次将二维数组矩阵的中最右上角的数字与要查找的数字比较,基于二维数组从左到右从上到下递增,那么当最右上角的数字大于目标数字就可以去掉该列,当最右边的数字小于目标数字的时候就去掉该行,如此遍历查找