class Solution {
public:
bool binarySearch(vector<int>& nums, int target)
{
int left = 0, right = nums.size();
while (left < right)
{
int mid = left + (right - left) / 2;
if (nums[mid] == target)
return true;
else if (nums[mid] < target)
left = mid + 1;
else if (nums[mid] > target)
right = mid;
}
return false;
}
bool searchMatrix(vector<vector<int>>& matrix, int target) {
int left = 0, right = matrix.size(), len = matrix[0].size() - 1;
while (left < right)
{
int mid = left + (right - left) / 2;
if (matrix[mid][0] <= target && matrix[mid][len] >= target)
return binarySearch(matrix[mid], target);
else if (matrix[mid][0] > target)
right = mid;
else if (matrix[mid][len] < target)
left = mid + 1;
}
return false;
}
};