题目描述:
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
解析:取二维数组的右上方的顶点与要找的数字比较,如果要找的数字比顶点的数字小,那么舍弃该列(column),如果要找的数字比顶点大,则舍弃该数字所在的行(row),若相等则跳出。
public class Solution {
public boolean Find(int target, int [][] array) {
if(array == null){
return false;
}
int row = 0;//从第0行开始
int column = array[0].length - 1;//从第0行的最后一列开始
while(row < array.length && column >= 0){
if(array[row][column] == target){
return true;
}else if(array[row][column] > target){
column--;//顶点比目标值大,舍弃该列
}else{
row++;//顶点比目标值小,舍弃该行
}
}
return false;//没找到返回false
}
}