题目描述
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
考虑如上图所示的数组,一右上角为起点,若想找的值大于起点,则范围向下缩小,即row+1;
若小于起点,范围向左缩小,col-1
所以target值为7时的下一状态应在绿色块上判断。
起点也可以选在左下角,只有满足向两个方向走判断条件不一样即可。左上角和右下角就不可以,因为两个方向都是大于或小于起点的。
public class Solution {
public boolean Find(int target, int [][] array) {
if(array== null|| array.length==0|| array[0].length==0) return false;
int row= 0, col= array[0].length-1;
while(col>=0 && row<= array.length-1){
if(array[row][col]== target) return true;
else if(array[row][col]< target) row++;
else if(array[row][col]> target) col--;
}
return false;
}
}