Leetcode 240, Search a 2D matrix, 难度medium
这个还是有关分治的问题,就是在一个单行或者单列的有序数组里面查找一个数,因为是有序的,所以可以根据单行进行二分查找,所以就是对每一行进行一次二分查找就可以了。
以下是代码:
class Solution {
public:
bool searchMatrix(vector<vector<int>>& matrix, int target) {
if(matrix.empty()) return false;
int row = matrix.size(), column = matrix[0].size();
for (int i =0; i < row; i++) {
bool res = binary_search(matrix[i], target, 0, column - 1);
if(res) return true;
}
return false;
}
bool binary_search(vector<int>& s, int target, int l ,int r) {
while(l <= r) {
int mid = (l + r) / 2;
if(s[mid] == target) return true;
else if(s[mid] < target) l = mid + 1;
else r = mid - 1;
}
return false;
}
};