时间复杂度O(m+n) 遍历每一行每一列的右上角元素直到找到元素
无额外空间
利用其有序递增的特点,进行一次循环排除一行或者一列,直到找到元素或者边界
有m行n列,最坏情况下共排除m+n次
class Solution {
public:
bool Find(int target, vector<vector<int> > array) {
if (array.empty() || array[0].empty()) {
return false;
}
// 求解行数 列数,以及一个指向右上角的坐标
int rows = array.size(), columns = array[0].size();
int row = 0, col = columns - 1;
while (row < rows && col >= 0) {
if (array[row][col] == target) {
return true;
} else if (array[row][col] < target) {
row++;
} else if (array[row][col] > target) {
col--;
}
}
return false;
}
};