在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
class Solution {
public:
bool Find(int target, vector<vector<int> > array) {
int j=0;
int row=array.size()-1;//行数
int col=array[0].size()-1;
if(array.size()!=0)
{
while(row>=0&&j<=col)//搜索终点设置(0,col)
{
if (array[row][j]==target)//搜索起点(row,0)
return true;
else
if (array[row][j]>target)
--row;
else ++j;
}
}
return false;
}
};
总结:首先该题二维数组由上到下,由左到右递增状态,要找某个数则考虑从数组的左下角或右上角作为起点,建立循环比较,若比目标值大向小方向搜索,否则向大方向搜索。
流程:(1)求出二维数组的大小
(2)看数组大小代码鲁棒性
(3)设定循环终止条件while循环
(4)循环内部判断与目标值的大小关系
(5)更改搜索方向
---------------------
作者:libinxxx
来源:CSDN
原文:https://blog.csdn.net/libinxxx/article/details/82666327
版权声明:本文为博主原创文章,转载请附上博文链接!