Note:
从左到右从上到下都是递增的,可以看成个一位数组进行二分,最后给映射成下标就行了
m代表列有多少的话,那么下标就是
x = position / m
y = position % m
代码如下:
class Solution {
public:
bool searchMatrix(vector<vector<int>>& matrix, int target) {
int n = matrix.size();
if(!n) return false;
int m = matrix[0].size();
int l = 0, r = n * m - 1;
while(l < r){
int mid = l + r >> 1;
if(matrix[mid / m][mid % m] >= target) r = mid;
else l = mid + 1;
}
if(matrix[r / m][r % m] == target) return true;
return false;
}
};