思路:从矩阵右上角开始遍历,只要当前元素小于target,就往下移动,当前元素大于target,就往左移动。
举例如下:
时间复杂度:$O(n + m)$
class Solution {
public:
bool searchMatrix(vector<vector<int>>& matrix, int target) {
int n = matrix.size(), m = matrix[0].size();
int i = 0, j = m - 1; //从右上角开始
while (i < n && j >= 0)
{
if (matrix[i][j] == target) return true;
else if (matrix[i][j] < target) i ++ ; //向下移动
else j -- ; //向左移动
}
return false;
}
};