Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the following properties:
- Integers in each row are sorted from left to right.
- The first integer of each row is greater than the last integer of the previous row.
For example,
Consider the following matrix:
代码语言:javascript复制[
[1, 3, 5, 7],
[10, 11, 16, 20],
[23, 30, 34, 50]
]
Given target = 3
, return true
.
在有序矩阵中找目标数字,
二分,中间计算一下x,y坐标
代码语言:javascript复制class Solution {
public:
bool searchMatrix(vector<vector<int>>& matrix, int target) {
if(matrix.empty()) return false;
int l=0,r=matrix.size()*matrix[0].size()-1;
while(l<=r)
{
int mid=(l r)>>1;
int com=matrix[mid/matrix[0].size()][mid%matrix[0].size()];
if(com==target) return true;
if(com<target)
l=mid 1;
else
r=mid-1;
}
return false;
}
};