leetcode hot100-64 搜索二维矩阵

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

若将矩阵每一行拼接在上一行的末尾,则会得到一个升序数组,我们可以在该数组上二分找到目标元素。

你可能感兴趣的:(leetcode,矩阵,算法)