题目描述:
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
代码:
public boolean Find(int target, int [][] array) {
int rowNum = array.length; //定义数组行数
int colNum = 0;
if(rowNum > 0){
if(array[0].length == 0)
return false;
colNum = array[0].length; //定义数组列数
}
//若是数组第一个元素就比查找的元素大,就没必要继续执行下去
if(array[0][0] > target || array[rowNum-1][colNum-1] < target)
return false;
for(int i = 0; i < rowNum; i++){
for(int j = 1; j < colNum; j++){
if(array[i][0] == target || array[i][j] == target)
return true;
if(array[i][j] > target && array[i][0] < target){
break;
}
}
}
return false;
}
注意点:一、当target值大于第一行所有值时,应该继续从下一行开始比较。二、当大于某行的 i 列元素并且小于改行的 j 列元素,若target值存在,它并不一定就在第 i 列中。