[力扣算法题]《74. 搜索二维矩阵》
class Solution {
public:
bool searchMatrix(vector<vector<int>>& matrix, int target) { // 一次通过,哈哈
// c++ god forever
int l1 = (int)matrix.size();
int l2 = (int)matrix[0].size();
if(target<matrix[0][0] || target > matrix[l1-1][l2-1])return false;
for(int i=0; i<l1; ++i){
if(target<matrix[i][0] || target>matrix[i][l2-1])continue;
// int l = 0, r = l2-1;
if(binarySearch(matrix[i], target, l2))return true;
// while(l<=r){ // start binarySearch
// int mid = (l+r) / 2;
// if(target==matrix[i][mid])return true;
// if(target<=matrix[i][mid]){
// r = mid - 1;
// }else{
// l = mid + 1;
// }
// }
}
return false;
}
bool binarySearch(vector<int>& nums, int target, int n){
int l = 0, r = n-1;
while(l<=r){ // start binarySearch
int mid = (l+r) / 2;
if(target==nums[mid])return true;
if(target<=nums[mid]){
r = mid - 1;
}else{
l = mid + 1;
}
}
return false;
}
};