题目描述(Easy)
二维有序数组的二分查找某个数
算法分析
先纵向二分查找,再横向二分查找。
提交代码:
class Solution {
public:
bool searchMatrix(vector<vector<int>>& matrix, int target) {
if (matrix.empty() || matrix[0].empty()) return false;
int end_row = matrix.size() - 1, end_col = matrix[0].size() - 1;
int start_row = 0, start_col = 0;
while (start_row <= end_row && start_col <= end_col) {
int mid_row = (start_row + end_row) >> 1;
if (target > matrix[mid_row][end_col]) {
start_row = mid_row + 1;
continue;
} else if (target < matrix[mid_row][start_col]) {
end_row = mid_row - 1;
continue;
}
int mid_col = (start_col + end_col) >> 1;
if (matrix[mid_row][mid_col] < target)
start_col = mid_col + 1;
else if (matrix[mid_row][mid_col] > target) {
end_col = mid_col - 1;
} else {
return true;
}
}
return false;
}
};