1. 编译说明
- 第一次刷剑指offer的题,记录一下这种模式(核心代码模式),这种模式不需要考虑输入输出。二维数组就是Find里的 array。要查找的对象就是target目标。这道题个人第一反应就是从左上角广搜嘛,但其实没必要,算法是灵活的,怎么方便简洁怎么来,思路是反向从大到小缩小遍历控件,左上角开始,目标比他小就行左移动,比他大就列向下移动慢慢找即可。找不到就返回false。
2.代码实现
class Solution {
public:
bool Find(int target, vector<vector<int> > array) {
//获取vector的行数
int rows = array.size();
//获取vector的列数
int cols = array[0].size();
//if(array != nullptr && rows>0 && cols>0)
if(rows>=0 && cols>=0){
int row=0;
int col=cols-1;
while(row<rows && col>=0){
if(target<array[row][col])
col--;
else if(target>array[row][col])
row++;
else
return true;
}
}
return false;
}
};
京公网安备 11010502036488号