- 给定一个二维数组,其每一行从左到右递增排序,从上到下也是递增排序。给定一个数,判断这个数是否在该二维数组中。
- 思路:从右上角开始找,小的数在左边,大的数在右边。右上角是matrix[0][length-1]。
public boolean Find(int target, int [][] array) {
if(array == null || array.length==0 || array[0].length==0)
return false;
int rows=array.length,cols=array[0].length;
int r=0,c = cols-1;//从右上角开始
while(r<rows-1&&c>=0){
if(target==array[r][c]){
return true;
}else if(target>array[r][c]){
r++;
}else{
c--;
}
}
return false;
}```
第一个问题,array==null,少打了=,还有==之间有空格。
第二个问题,for循环内,r没有小于等于rows-1,直接写打小于,这样少了一行比较。