我用了三种解法,全部都可以在牛客网上通过。
第一种解法是最简单的,遍历整个二维数组找那个整数;
第二种和第三种都是根据二维数组有序的特性进行查找,第二种方法是从左下角开始查找,大于左下角删除一行,小于左下角删除一列;第三种是从右上角开始查找,大于右上角删除一行,小于右上角的删除一列。java代码如下:
public class Solution {
public boolean Find(int target, int [][] array) {
int rows = array.length;
int col = array[0].length;
//最简单的查询方法
/*for(int i = 0;i < rows;i++){
for(int j = 0;j < col;j++){
if(target == array[i][j]){
return true;
}
}
}
return false;*/
//根据有序的特性进行查找
/*从左下角开始查找,大于左下角删除一行,小于左下角删除一列*/
/*int i,j = 0;
for(i = rows - 1,j = 0;i >= 0 && j < col;){
if(target == array[i][j]){
return true;
}
else if(target > array[i][j]){
j++;
continue;
}
else if(target < array[i][j]){
i--;
continue;
}
}
return false;*/
/*从右上角开始查找,大于右上角删除一行,小于右上角的删除一列*/
int i,j;
for(i = 0,j = col - 1;j >= 0 && i < rows;){
if(target == array[i][j]){
return true;
}
else if(target > array[i][j]){
i++;
continue;
}
else if(target < array[i][j]){
j--;
continue;
}
}
return false;
}
}