题目
时间限制:1秒
空间限制:32768K
热度指数:517541
本题知识点: 查找
题目描述:
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
思路
选取右上角或者左下角的元素a[row][column]与target进行比较,
当target小于元素a[row][column]时,那么target必定在元素a所在行的上面,
row –;
当target大于元素a[row][column]时,那么target必定在元素a所在列的右边,
即column++;
ps :对于测试用例 测试用例:16,[[]] 对应输出应该为: false,作者直接采用try,catch 捕获异常。
代码
public class Solution {
public boolean Find(int target, int [][] array) {
int row = array.length-1;
int column=0;
try{
while(column<= array.length-1 && row>=0)
{
if(array[row][column]==target){
return true;
}
else if (array[row][column]<target){
column++;
}
else if (array[row][column]>target){
row--;
} }
}
catch (ArrayIndexOutOfBoundsException e){
e.printStackTrace();
}
return false;
}
}