剑指offer 二维数组的查找

前面1个月学完了机器学习方面,基础知识学完了,但是还有很多欠缺,数学推理也不好,还有很多高大上的没有涉及。这几天复习一下好长时间之前的题目,《剑指offer》的经典题目,一共66道题,有意义的50道左右,这4天把它们做完为找工作做准备。

思路很简单,从右上角或者左下角开始寻找,每次根据比角上的数大或小排除一行或一列,找到为true,找不到为false。

class Solution {
public:
    bool Find(vector<vector<int> > array,int target) {
        int x = array.size();
        int y = array[0].size();
        int tempx, tempy;
        tempx = 0;
        tempy = y - 1;
        while(tempx >= 0 && tempy >= 0 && tempx < x && tempy < y)
            {
            if(target == array[tempy][tempx])
                return true;
            if(target < array[tempy][tempx])
                tempy -= 1;
            else
                tempx += 1;
        }
        return false;
    }
};


你可能感兴趣的:(算法,二维数组,数据,剑指offer)