剑指offer : 二维数组中的查找
题目描述
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
这道题方法其实有很多种,很多人第一思路就是暴力搜索,如下所示:
class Solution {
public:
bool Find(int target, vector<vector<int> > array) {
for(int i=0;i<array.size();++i){
for(int j = 0;j<array[i].size();++j){
if(array[i][j]==target)
return true;
}
}
return false;
}
};
但是,上面的做法很耗时,所以,这里提出一个新的方法:
class Solution {
public:
bool Find(vector<vector<int> > array,int target) {
int rowCount = array.size();
int colCount = array[0].size();
int i,j;
for(i=rowCount-1,j=0;i>=0&&j<colCount;)
{
if(target == array[i][j])
return true;
if(target < array[i][j])
{
i--;
continue;
}
if(target > array[i][j])
{
j++;
continue;
}
}
return false;
}
};