题目链接:搜索二维矩阵 II

编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:

  • 每行的元素从左到右升序排列。
  • 每列的元素从上到下升序排列。

方法一:二分查找

class Solution {
public:
    bool searchMatrix(vector<vector<int>>& matrix, int target) {
        bool ans = false;
        int m = matrix.size();
        int n = matrix[0].size();
        for (int i = 0;i < m;i++) {
            if (target < matrix[i][0]) continue;
            if (target > matrix[i][n-1]) continue;
            int l = -1,r = n;
            while (l + 1 < r) {
                int mid = (l+r)/2;
                if (matrix[i][mid] == target) return true;
                else if (matrix[i][mid] > target) r = mid;
                else l = mid;
            }
        }
        return false;
    }
};

方法二:旋转45度

class Solution {
public:
    bool searchMatrix(vector<vector<int>>& matrix, int target) {
        int i = matrix.size() - 1, j = 0;
        while(i >= 0 && j < matrix[0].size())
        {
            if(matrix[i][j] > target) i--;
            else if(matrix[i][j] < target) j++;
            else return true;
        }
        return false;
    }
};

标签: hot100, Medium, 矩阵

添加新评论