题目:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
解法一:暴力解法,一个一个查找
class Solution {
public:
bool Find(int target, vector<vector<int> > array) {
int m=array.size();
int n=array[0].size();
for(int i=0;i<m;++i){
for(int j=0;j<n;++j){
if(array[i][j]==target)
return true;
}
}
return false;
}
};
解法二:
马鞍查找法
参考:https://www.cnblogs.com/edisonchou/p/4737944.html
class Solution {
public:
bool Find(int target, vector<vector<int> > array) {
int m=array.size();
int n=array[0].size();
if(!array.empty()&&m>0&&n>0){
int col=n-1;
int row=0;
while(row<m&&col>=0)
{
if(array[row][col]==target)
return true;
else if(array[row][col]>target)
--col;
else
++row;
}
}
return false;
}
};