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