通过两次二分查找来查询,第一次查询第一列,找到target在哪一行,再在那一行中二分查找,若找到则return true 否则return false
bool searchMatrix(vector<vector<int>>& matrix, int target) {
if(matrix.empty()||matrix[0].empty())return false;
if(matrix[0][0]>target||matrix.back().back()<target)return false;
int m = matrix.size();
int n = matrix[0].size();
int left = 0, right = m - 1, mid1;
while (right >= left)
{
mid1 = (right + left) / 2;
if (matrix[mid1][0] == target)return true;
else if (matrix[mid1][0]>target)right = mid1 - 1;
else left = mid1 + 1;
}
int temp = right, mid2;
left = 0;
right = n - 1;
while (right >= left)
{
mid2 = (right + left) / 2;
if (matrix[temp][mid2] == target)return true;
else if (matrix[temp][mid2]>target) right = mid2 - 1;
else left = mid2 + 1;
}
return false;
}