AcWing 15. 二维数组中的查找
原题链接
中等
作者:
Karma
,
2019-10-13 10:24:03
,
所有人可见
,
阅读 830
深搜法
class Solution {
public:
bool search(int x, int y, vector<vector<int>> array, int target)
{
if(x >= array.size() || y >= array[0].size())
{
return false;
}
else
{
if(array[x][y] < target)
{
return search(x+1, y, array, target) || search(x, y+1, array, target);
}
else if(array[x][y] > target)
{
return false;
}
else
{
return true;
}
}
}
bool searchArray(vector<vector<int>> array, int target) {
if(array.empty() || array[0].empty())
{
return false;
}
else
{
for(int i = 0; i < array.size(); ++ i)
{
for(int j = 0; j < array[i].size()-1; ++ j)
{
if(array[i][j] > array[i][j+1])
{
return false;
}
else
{
}
}
}
// 判断是否从上到下递增
for(int i = 0; i < array[0].size(); ++ i)
{
for(int j = 0; j < array.size()-1; ++ j)
{
if(array[j][i] > array[j+1][i])
{
return false;
}
else
{
}
}
}
return search(0, 0, array, target);
}
}
};