题解 | #二维数组中的查找#
二维数组中的查找
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;
}
}