240. 搜索二维矩阵 II
思路:Z字形查找
从matrix的右上角(0,n-1)进行搜索,每一步的搜索过程中,如果位于位置(x,y),那么以matrix的左下角为左下角、以(x,y)为右上角的矩阵进行搜索。
- 如果matrix[x] [y]==target,返回
- 如果matrix[x] [y]>target,排除第y列,y减一
- 如果matrix[x] [y]<target,排除第x行,x加一
搜索过程中,超出矩阵边界,说明矩阵不存在target
class Solution {
public:
bool searchMatrix(vector<vector<int>>& matrix, int target) {
int i=0,j=matrix[0].size()-1;
while(i>=0&&i<matrix.size()&&j>=0&&j<matrix[0].size()){
if(matrix[i][j]==target)
return true;
else if(matrix[i][j]<target)
++i;
else
--j;
}
return false;
}
};
时间复杂度 O(m+n)
空间复杂度 O(1)