1. 编译说明

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