Search a 2D Matrix 杨氏矩阵查找

来源:互联网 发布:极有家淘宝官网 编辑:程序博客网 时间:2024/04/28 13:09
class Solution {
public:
    bool searchMatrix(vector<vector<int> > &matrix, int target) {
        if(matrix.size()==0)
        return false;
        int leftrow=0;
        int rightrow=matrix.size()-1;
        int leftcolumn=0;
        int rightcolumn=matrix[0].size()-1;
        int rowindex=-1;
        while(leftrow<=rightrow)
        {
            int midrow=(leftrow+rightrow)/2;
            if(matrix[midrow][0]<=target&&target<=matrix[midrow][rightcolumn])
            {
                rowindex=midrow;
                break;
            }
            else if(target<matrix[midrow][0])
            {
                rightrow=midrow-1;
            }
            else if(target>matrix[midrow][rightcolumn])
            {
                leftrow=midrow+1;
            }
        }
        if(rowindex<0) return false;
        while(leftcolumn<=rightcolumn)
        {
            int midcolumn=(leftcolumn+rightcolumn)/2;
            if(matrix[rowindex][midcolumn]==target)
            {
              return true;
            }
            else if(target<matrix[rowindex][midcolumn])
            {
                rightcolumn=midcolumn-1;
            }
            else if(target>matrix[rowindex][midcolumn])
            {
                leftcolumn=midcolumn+1;
            }
        }
        return false;
    }
};
0 0
原创粉丝点击