首页 > 代码库 > 【leetcode】 Search a 2D Matrix (easy)

【leetcode】 Search a 2D Matrix (easy)

Write an efficient algorithm that searches for a value in an m 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.

 

实际上就是二分搜索, 不难, 一次AC。

注意一下退出条件是 l <= r 就行。有等于。

class Solution {public:    bool searchMatrix(vector<vector<int> > &matrix, int target) {        if(matrix.empty())            return false;        int length = matrix.size() * matrix[0].size();        int l = 0, r = length - 1;        while(l <= r) //注意 这里包含等于        {            int mid = (l + r) / 2;            int col = mid % matrix[0].size();            int row = mid / matrix[0].size();            if(matrix[row][col] < target)            {                l = mid + 1;            }            else if(matrix[row][col] > target)            {                r = mid - 1;            }            else            {                return true;            }        }        return false;    }};

 

【leetcode】 Search a 2D Matrix (easy)