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; } };