【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)