在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
解1:左下开始查找
class Solution {
public:
bool Find(int target, vector<vector<int> > array) {
// array是二维数组,这里没做判空操作
int rows = array.size();
int cols = array[0].size();
int i = rows-1;
int j = 0; //从左下角起
while(i>=0 && j<=cols-1){
if(target>array[i][j]){
j++;
}
else if(target<array[i][j]){
i--;
}
else if(target==array[i][j]){
return true;
}
}
return false;
}
};
解2:右上开始查找
class Solution {
public:
bool Find(int target, vector<vector<int> > array) {
// array是二维数组,这里没做判空操作
int rows = array.size();
int cols = array[0].size();
int i = 0;
int j = cols-1; //从右上角起
while(i<=cols-1&&j>=0){
if(target>array[i][j]){
i++;
}
else if(target<array[i][j]){
j--;
}
else if(target==array[i][j]){
return true;
}
};