Search a 2D Matrix

class Solution {
public:
    bool searchMatrix(vector<vector<int> > &matrix, int target)
    {
        int low=0,high=matrix.size()-1;
        if(high==-1)return 0;
        int level=0;
        //if(matrix[0][0]>target)return false;
        while(low<=high)
        {
            level=(low+high)/2;
            if(matrix[level][0]==target)return true;
            if(matrix[level][0]>target)high=level-1;
            if(matrix[level][0]<target)
            {
                if(level==matrix.size()-1||matrix[level+1][0]>target)
                break;
                else low=level+1;
            } 
        }
        
        low=1,high=matrix[0].size()-1;
        int m;
        while(low<=high)
        {
            m=(low+high)/2;
            if(matrix[level][m]==target)return true;
            if(matrix[level][m]>target)high=m-1;
            if(matrix[level][m]<target)low=m+1;
        }
        return false;
    }
};
原文地址:https://www.cnblogs.com/tgkx1054/p/3140234.html