二维数组中的查找
题目描述:
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
分析:
因为这个数组的每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。所以我们可以取第一行的最后一位数,如果这个数和要求的数相等,则返回true,如果这个数大于所求的数,则我们往下一行查找,如果这个数小于所求的数,则我们往前一列查找。
class Solution {
public:
bool Find(int target, vector<vector<int> > array) {
int col = 0;
int row = array[0].size() - 1;
while(col < array.size() && row >= 0)
{
if(target == array[col][row])
return true;
else if(target < array[col][row])
{
row--;
}
else{
col++;
}
}
return false;
}
};