点击打开链接
//二分,先横坐标二分,然后再纵坐标二分。
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<string>
#include<cstring>
#include<string.h>
#include<math.h>
#include<algorithm>
#include<queue>
#include<vector>
#include<set>
#include<map>
#include<limits.h>
#include<assert.h>
#include<sstream>
#define LL long long
#define inf 0x3f3f3f3f
#define mod 1e9+7
using namespace std;
class Solution {
public:
bool searchMatrix(vector<vector<int>>& matrix, int target) {
if(matrix.size()==0||matrix[0].size()==0){//这里的判定条件改一下
return false;
}
int l=0,r=matrix.size()-1,mid=0;
while (l<=r) {
mid=(l+r)/2;
if(matrix[mid][0]==target) return true;
else if(matrix[mid][0]>target){
r=mid-1;
}
else{
l=mid+1;
}
}
int row=r;
if(row<0) return false;
l=0, r=matrix[0].size()-1;
while (l<=r) {
mid=(l+r)/2;
if(matrix[row][mid]==target) return true;
else if(matrix[row][mid]>target){
r=mid-1;
}
else{
l=mid+1;
}
}
return false;
}
};
int main()
{
Solution temple;
vector<vector<int>> res;
vector<int> v1, v2, v3;
v1.push_back(1); v1.push_back(3); v1.push_back(5); v1.push_back(7);
v2.push_back(10); v2.push_back(11); v2.push_back(16);v2.push_back(20);
v3.push_back(23); v3.push_back(30); v3.push_back(34); v3.push_back(50);
res.push_back(v1); res.push_back(v2); res.push_back(v3);
cout<<temple.searchMatrix(res, 3)<<endl;
return 0;
}