1957

无聊蛋疼的1957写的低端博客
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

[leetcode]Search a 2D Matrix

Posted on 2014-01-08 23:27  1957  阅读(119)  评论(0编辑  收藏  举报

= =每行放一起,就是一个一维的数组,而且是递增的。。那用二分就好啦。。

 

class Solution {
public:
    pair<int,int> toXY(int i , int row , int col){
        int x = i / col;
        int y = i % col;
        
        return make_pair(x,y);
    }
    int getEle(const vector<vector<int> > &matrix , int i){
        pair<int,int> xy = toXY(i , matrix.size() , matrix.front().size());
        return matrix[xy.first][xy.second];
    }
    bool searchMatrix(vector<vector<int> > &matrix, int target) {
        if(matrix.empty()) return false;
        
        int rowSize = matrix.size();
        int colSize = matrix.front().size();
        
        int l = 0;
        int r = rowSize * colSize - 1;
        while(l <= r){
            int mid = (l + r) / 2;
            int data = getEle(matrix , mid);
            if(data == target) return true;
            if(data < target) l = mid + 1;
            else r = mid - 1;
        }
        return false;
    }
};