题解 | #二维数组中的查找#
二维数组中的查找
http://www.nowcoder.com/practice/abc3fe2ce8e146608e868a70efebf62e
/** * @author jingbu * * 二维数组中的查找 * 在一个二维数组array中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。 * 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 * * 易错点,二维数组判空 */ public class Main { public static void main(String[] args) { int target=3; int[][] arr= {{} // {1,2,8, 9}, // {2,4,9,12}, // {4,7,10,13}, // {6,8,11,15} }; Solution solution = new Solution(); System.out.println(solution.Find(target, arr)); } } class Solution { public boolean Find(int target, int [][] array) { //如果数组直接为null;数组不为null,array.length==0,数组形式为{}; //数组不为null,array[0].length==0,数组形式为{{}}直接返回false //如果此处不判断下面会报数组越界 if(array==null|| array.length==0||array[0].length==0){ return false; } //数组的行数 int m= array.length; //数组的列数 int n=array[0].length; //判断目标值与每行最后一个值的大小 for (int i = 0; i < m; i++) { //如果最后一个值等于目标值,直接返回true if(array[i][n-1]==target){ return true; } //如果这一行有等于目标值的值,直接返回true else if(array[i][n-1]>target){ for (int j = 0; j < n-1; j++) { if(array[i][j]==target){ return true; } } } //不满足如上的条件就去下一行判断 } //都不满足的话说明不存在,返回false return false; } }