题目描述
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
注意点:要注意特殊情况的存在,比如数组为null,数组的长度为0等情况。
public class Solution {
public boolean Find(int target, int [][] array) {
boolean result = false;
if(array == null || array.length == 0) return false;
for(int i = 0; i < array.length; i++){
if(array[i] == null || array[i].length == 0) return false; //防止ArrayIndexOutOfBoundsException
if(target >= array[i][0]){
result = BinaraySearch(target,array[i],0,array[i].length);
}
if(result == true) return result;
}
return result;
}
public boolean BinaraySearch(int target, int[] array,int lo, int hi){
if(lo >= hi) return false;
int mid = (lo + hi) / 2;
if(array[mid] == target) return true;
else if(array[mid] > target) return BinaraySearch(target, array, lo, mid);
else return BinaraySearch(target, array, mid + 1, hi);
}
}