个人博客:https://luxialan.com

Search a 2D Matrix 分类: Leetcode(查找) 2015-04-11 10:19 24人阅读 评论(0) 收藏

Search a 2D Matrix


Write an efficient algorithm that searches for a value in anm x n matrix. This matrix has the following properties:

  • Integers in each row are sorted from left to right.
  • The first integer of each row is greater than the last integer of the previous row.

For example,

Consider the following matrix:

[
  [1,   3,  5,  7],
  [10, 11, 16, 20],
  [23, 30, 34, 50]
]

Given target = 3, return true.

 
class Solution {
public:
    bool searchMatrix(vector<vector<int> > &matrix, int target) {
        
        if (matrix.empty()) return false;
        int m = matrix.size();
        int n = matrix[0].size();
        
        int first = 0;
        int last = m*n;
        
        while (first < last) {
            int mid = first + (last - first) /2;
            int value = matrix[mid /n][mid %n];
            
            if(value == target)
                return true;
            else if (value < target)
                first = mid +1;
            else 
                last = mid;
        }
        return false;
    }
};

版权声明:本文为博主原创文章,未经博主允许不得转载。

posted @ 2015-04-11 10:19  luxialan  阅读(134)  评论(0编辑  收藏  举报