题目描述: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
- 循环查找 (找不到工作版)
bool Find(int target, vector<vector<int>> array)
{
if (array.empty()) return false;
int _row = array.size();
int _col = array[0].size();
int i, j;
for (i = 0; i < _row; i++)
{
for (j = 0; j < _col; j++)
{
if (target == array[i][j]) {
cout << "找到目标数字" << endl;
return true;
}
}
}
return true;
}
- 二分查找(选取左下角或右上角作为初始点)
bool Find2(int target, vector<vector<int>> array)
{
if (array.empty()) return false;
int _row = array.size();
int _col = array[0].size();
int i, j;
for (i = _row - 1, j = 0; i >= 0 && j < _col;)
{
if (target == array[i][j])
return target;
else if (target > array[i][j])
j++;
else
i--;
}
return false;
}