先查找 再二分法查找
class Solution {
bool search(vector<int>&m,int low,int high,int t)
{
if(low>high) return false;
int mid=low+(high-low)/2;
if(m[mid]==t) return true;
if(m[mid]>t)
return search(m,low,mid-1,t);
else
return search(m,mid+1,high,t);
}
public:
bool searchMatrix(vector<vector<int>>& matrix, int target) {
int m=matrix.size();
int n=matrix[0].size();
for(int i=0;i<m;i++)
{
if(matrix[0][0]>target) return false;
if(matrix[i][0]==target) return true;
if(i!=0&&matrix[i][0]>target&&matrix[i-1][0]<target)
{
if(search(matrix[i-1],0,n-1,target)) return true;
else return false;
}
if(i==m-1&&matrix[i][0]<target)
{
if(search(matrix[i],0,n-1,target)) return true;
else return false;
}
}
return false;
}
};