题意:在一个矩阵中搜索是否存在数target,矩阵中的数字每一行递增,每一行的第一个数字都比上一行的最后一个数字大。
题解:先二分搜在那一行,然后在那一行里面二分搜索是否存在target。
class Solution {
public:
bool searchMatrix(vector<vector<int>>& matrix, int target) {
int l = 0,r = matrix.size() - 1;
while(l < r)
{
int mid = (l + r + 1) / 2;
if(matrix[mid][0] > target) r = mid - 1;
else l = mid;
}
int row = l;
l = 0;
r = matrix[0].size() - 1;
while(l <= r)
{
int mid = (l + r) / 2;
if(matrix[row][mid] == target) return true;
else if(matrix[row][mid] > target) r = mid - 1;
else l = mid + 1;
}
return false;
}
};