Java剑指offer面试题3, 二维数组的查找

/**
 * @author ldy
 * @date 2018/8/7 10:17
 */
/**
 * 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。
 * 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
 * 

* 规律:首先选取数组中右上角的数字。如果该数字等于要查找的数字,查找过程结束: * 如果该数字大于要查找的数字,剔除这个数字所在的列:如果该数字小于要查找的数字,剔除这个数字所在的行。 * 也就是说如果要查找的数字不在数组的右上角,则每-次都在数组的查找范围中剔除)行或者一列,这样每一步都可以缩小 * 查找的范围,直到找到要查找的数字,或者查找范围为空。 */ public class Test3 { public static boolean find( int [][]matrix ,int number){ if(matrix==null||matrix.length<1||matrix[0].length<1){ return false; } //行数 int rows =matrix.length; //列数 int cols=matrix[0].length; int row=0,col=cols-1; while (row>=0&&row0&&colnumber){ col--; //如果右上角的数小于要找的数行数加一 }else { row++; } } return false; } public static void main(String[] args) { int[][] matrix = { {1, 2, 8, 9}, {2, 4, 9, 12}, {4, 7, 10, 13}, {6, 8, 11, 15} }; int [][]arr = new int[0][]; System.out.println(find(matrix,0)); System.out.println(find(arr,9)); } }

 

你可能感兴趣的:(剑指Offer)