Description

Submission
class Solution {
public:
bool searchMatrix(vector>& matrix, int target) {
if(matrix.empty()) return false;
if(matrix[0].empty()) return false;
int nRow = matrix.size();
int nCol = matrix[0].size();
int i = 0, j = nRow - 1;
while(i < j) {
int mid = (i + j) / 2;
if(target > matrix[mid][0]) i = mid + 1;
if(target < matrix[mid][0]) j = mid - 1;
if(target == matrix[mid][0]) i = j = mid;
}
int row = i;
if(matrix[row][0] > target) row--;
if(row < 0) return false;
i = 0;
j = nCol - 1;
while(i < j) {
int mid = (i + j) / 2;
if(target > matrix[row][mid]) i = mid + 1;
if(target < matrix[row][mid]) j = mid - 1;
if(target == matrix[row][mid]) i = j = mid;
}
return matrix[row][i] == target;
}
};
