题目描述:在一组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
【分析】
从左下角元素开始比较,大于目标值,上移;小于目标值,右移。
牢记循环条件: while(i>=0&&j<col)检验数组有效。
代码一:
class Solution {
public:
bool Find(int target, vector<vector<int> > array) {
int row=array.size();//二维数组行数
int col=array[0].size();//二维数组列数
int i=row-1,j=0;//i、j下标
while(i>=0&&j<col)//检验数组————这个条件是关键!!!牢记
{
if(target<array[i][j])//左下角开始
i--;//找的数太大,列不动,上移
else if(target>array[i][j])
j++;//找的数太小,行不动,右移
else
return true;
}
return false;
}
};
代码二:
class Solution {
public:
bool Find(int target, vector<vector<int> > array) {
int row=array.size();//二维数组行数
int col=array[0].size();//二维数组列数
int i,j;//i、j下标
for(i=row-1,j=0;i>=0&&j<col;)
{
if(array[i][j]==target)
return true;
else if(array[i][j]>target)
{
i--;//找的数太大,列不动,上移
continue;//continue表示跳过后面语句,转到循环条件判断
}
else
{
j++;//找的数太小,行不动,右移
continue;
}
}
return false;
}
};