class Solution {
  public:
    bool Find(int target, vector<vector<int> > array) {
        //暴力求解代码

        // for (auto i : array){
        //     for (auto j:i){
        //         if (j == target)
        //             return true;
        //     }
        // }
        // return false;

        //更便捷的解法:利用矩阵右上角或者左下角元素,进行快速一行或一列的排除
	    //利用右上角
        //下面两行删掉后内存和时间均增加
        // if (array.empty())
        //     return false;
        // int row = 0; //行
        // int col = array[0].size() - 1; //列
        // while (row < array.size() && col >= 0) {
        //     if (array[row][col] == target)
        //         return true;
        //     else if (array[row][col] > target)
        //         col--;
        //     else if (array[row][col] < target)
        //         row++;
        // }
        // return false;

        //利用左下角元素
        if (array.empty())
            return false;
        int row = array.size()-1; //行
        int col = 0; //列
        while (col < array[0].size() && row >= 0) {
            if (array[row][col] == target)
                return true;
            else if (array[row][col] > target)
                row--;
            else if (array[row][col] < target)
                col++;
        }
        return false;
 


    }
};