LeetCode 74. Search a 2D Matrix

没想到方法一利用展开二维数组,二分查找,各个行的元素按照mod的变换来计算

将二维数组按行展开的话,就是一个排序的一维数组,因此通过一维数组的二分查找很容易得到答案。

class Solution {
public:
    bool searchMatrix(vector<vector<int> > &matrix, int target) {
        int rows=matrix.size();
        int cols=matrix[0].size();
        int left=0,right=(rows*cols-1);
        int mid,r,c,val;
        while(left<=right){
            mid=left+((right-left)>>1);
            r=mid/cols;
            c=mid%cols;
            if(matrix[r][c]==target)
                return true;
            if(matrix[r][c]<target)
                left=mid+1;
            else
                right=mid-1;
        }
        return false;
    }
};

第二种方法

先通过二分查找元素所在的行,再在所在行通过二分查找元素。

阅读更多

没有更多推荐了,返回首页