题目大意:在一个升序的二维数组中是否存在目标值
分析:二分搜索。将二维数组展开就是简单的一维数组二分法查值。
代码:
class Solution {
public:
bool searchMatrix(vector<vector<int>>& matrix, int target) {
int m = matrix.size();
int n = matrix[0].size();
if (m == 0 || n == 0) return false;
int left = 0, right = m * n - 1;
while (left <= right) {
int mid = (left + right) / 2;
int x = mid / n;
int y = mid % n;
if (matrix[x][y] > target) {
right = mid - 1;
}
else if (matrix[x][y] < target) {
left = mid + 1;
}
else return true;
}
return false;
}
};