Leetcode:Search a 2D Matrix 菜鸟解法

来源:互联网 发布:阿里云ubuntu中文乱码 编辑:程序博客网 时间:2024/06/02 11:39

从右上角往左下角进行查找可以解决这个问题,不过我不想那么做,所以做了两次二分法,先行二分再列二分


class Solution {public:    bool searchMatrix(vector<vector<int> > &matrix, int target) {        int m = matrix.size();        int left=0,right = 0,mid = 0,row=0;        if(m==0) return false;        int n = matrix[0].size();        if(n==0) return false;                right = m-1;mid = (left+right)/2;        if(target<matrix[0][0]||target>matrix[m-1][n-1]) return false;        while((left!=right-1)&&right!=0){            if(matrix[mid][0]<target){                left = mid;                mid = (left+right)/2;            }            else if(matrix[mid][0]>target){                right = mid;                mid = (left+right)/2;            }            else return true;        }        if(matrix[right][0]==target||matrix[left][0]==target) return true;        if(target>matrix[right][0]) left =right;        row = left;left = 0;right = n-1;mid = (left+right)/2;        while(left!=right-1&&right!=0){            if(matrix[row][mid]<target){                left = mid;                mid = (left+right)/2;            }            else if(matrix[row][mid]>target){                right = mid;                mid = (left+right)/2;            }            else return true;        }              if(matrix[row][right]==target||matrix[row][left]==target) return true;        return false;    }};


0 0
原创粉丝点击