class Solution {
public:
int binary_search_1(vector<vector<int>>& matrix,int b,int e,int p){
if(b==e){
if(p>=matrix[b][0]){
return b;
}
else{
return b-1;
}
}
else{
int mid=(b+e+1)/2;
if(p<matrix[mid][0]){
return binary_search_1(matrix,b,mid-1,p);
}
else{
return binary_search_1(matrix,mid,e,p);
}
}
}
bool binary_search_2(vector<int> &nums,int b,int e,int p){
if(b==e){
if(nums[b]==p){
return true;
}
else{
return false;
}
}
else{
int mid=(b+e)/2;
if(p<=nums[mid]){
return binary_search_2(nums,b,mid,p);
}
else{
return binary_search_2(nums,mid+1,e,p);
}
}
}
bool searchMatrix(vector<vector<int>>& matrix, int target) {
int line=binary_search_1(matrix,0,matrix.size()-1,target);
if(line<0){
return false;
}
return binary_search_2(matrix[line],0,matrix[line].size()-1,target);
}
};
LeetCode - 74 Search a 2D Matrix
最新推荐文章于 2020-09-29 20:40:03 发布