74 Search a 2D Matrix
[
[1, 3, 5, 7],
[10, 11, 16, 20],
[23, 30, 34, 50]
]bool binary_matrix_search(int front, int end, vector<vector<int>>& matrix, int target)
{
if (front <= end) {
int row_size = matrix.at(0).size();
int middle = ((end - front) >> 1) + front;
int cur_elm = matrix[middle / row_size][middle % row_size];
if (target == cur_elm) return true;
else if (front == end) return false;
else if (target < cur_elm) return binary_matrix_search(front, middle, matrix, target);
else return binary_matrix_search(middle + 1, end, matrix, target);
}
else return false;
}
bool searchMatrix(vector<vector<int>>& matrix, int target)
{
if (matrix.empty()) return false;
int front = 0;
int end = matrix.size() * matrix.at(0).size() - 1;
return binary_matrix_search(front, end, matrix, target);
}Last updated