思路:从矩阵右上角开始遍历,只要当前元素小于target,就往下移动,当前元素大于target,就往左移动。
举例如下:
代码
时间复杂度:$O(n + m)$
class Solution {
public:
bool searchArray(vector<vector<int>> array, int target) {
if (array.empty() || array[0].empty()) return false;
int n = array.size(), m = array[0].size();
int i = 0, j = m - 1; //从右上角开始
while (i < n && j >= 0)
{
if (array[i][j] == target) return true;
else if (array[i][j] < target) i ++ ; //向下移动
else j -- ; //向左移动
}
return false;
}
};
该题对应力扣的 240. 搜索二维矩阵 II