class Solution {
public:
bool searchMatrix(vector<vector<int>>& matrix, int target) {
int m = matrix.size();
if (!m)
{
return false;
}
int n = matrix.at(0).size();
if (!n)
{
return false;
}
int row = -1;
for (int i = 0; i < m; i++)
{
if (matrix[i][0] <= target && matrix[i][n - 1] >= target) {
row = i;
break;
}
}
if (row < 0)
{
return false;
}
//二分查找
int low = 0, high = n - 1;
vector<int> tVec = matrix.at(row);
while (low <= high)
{
int mid = (low + high) / 2;
if (tVec.at(mid) > target)
{
high = mid - 1;
}
else if (tVec.at(mid) < target){
low = mid + 1;
}
else {
return true;
}
}
return false;
}
};