题目
在一个 n * m 的二维数组中,每一行都按照从左到右 非递减 的顺序排序,每一列都按照从上到下 非递减 的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
思路:
1、以矩阵中最右上角的数值为基准点,进行比较,当该整数小于基准点时,在当前行左移一列再次进行比较,而当整数大于基准点则向下加一行,进行比较,都不相等,返回False,相等则返回TRUE。
Class Solution{
public boolean findNumberIn2DArray(int[][] matrix,int target){
//判断数组空
if((matrix == null || matrix.length ==0)|| (matrix.length ==1 && matrix[0].length ==0))
return false;
int i = 0,j= matrix[0].length-1;
while(i<=matrix.length-1 && j>=0)
{
//首先判断相等,防止i或j过界
if(target == matrix[i][j]) return true;
if(target < matrix[i][j] ) j--;
else i++;
}
return false;
}
}