LeetCode 240

https://leetcode.cn/problems/search-a-2d-matrix-ii/description/

难度:中等

排除法。比较剩余矩阵右上角的元素 matrix[i][j] 和 target。如果更小,说明这一行所有元素都小于 target,i++。如果更大,说明这一列所有元素都大于 target,j–。直到找到 target 或矩阵为空。

时间复杂度:O(m+n),其中 m 和 n 分别为 matrix 的行数和列数。

空间复杂度:O(1)。

class Solution {
public:
    bool searchMatrix(vector<vector<int>>& matrix, int target) {
        int m = matrix.size(), n = matrix[0].size();
        int i = 0, j = n - 1; // 从右上角开始
        while (i < m && j >= 0) { // 还有剩余元素
            if (matrix[i][j] == target) {
                return true; // 找到 target
            }
            if (matrix[i][j] < target) {
                i++; // 这一行剩余元素全部小于 target,排除
            } else {
                j--; // 这一列剩余元素全部大于 target,排除
            }
        }
        return false;
    }
};