题目描述
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
解决:(代码已在牛客网上通过)
1.从一个角开始查找,从左上角(都小于target)或右下角(都大于target)开始,无法进行约束;因此从左下角或右上角开始查找,可以对target进行左右约束。
public boolean Find(int target, int [][] array) {
boolean result=false;
int row=array.length-1;
int col=0,cols=array[0].length;
if(array==null) return false;
while(row>=0 && col<cols){
if(array[row][col]<target){
col++;
}else if(array[row][col]>target){
row--;
}else{
result=true;
break;
}
}
return result;
}
在进行代码编写时,我设置了一个变量flag,令其等于array[row][col],在if判断中会出现边界异常,
这是由于--row出现的,因此不设置flag,直接在if中判断, 不符合条件就不进行判断了。