美文网首页
搜索二维矩阵 II

搜索二维矩阵 II

作者: 王王王王王景 | 来源:发表于2019-08-05 17:07 被阅读0次

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

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

    现有矩阵 matrix 如下:

    [
      [1,   4,  7, 11, 15],
      [2,   5,  8, 12, 19],
      [3,   6,  9, 16, 22],
      [10, 13, 14, 17, 24],
      [18, 21, 23, 26, 30]
    ]
    

    给定 target = 5,返回 true。

    给定 target = 20,返回 false。

    代码:

    class Solution {
    public:
        bool searchMatrix(vector<vector<int>>& matrix, int target) {
            if(matrix.size() == 0) return false;
            if(matrix[0].size() == 0) return false;
            
            // 左下角是该列最大的值,同时也是该行最小的值
            // (1) = 左下角的元素值,找到
            // (2)> 左下角元素值,排除该列
            // (3)< 左下角元素值,排除该行
            int M = matrix.size(), N = matrix[0].size();
            int col = 0; // 左下角的列
            int row = matrix.size() - 1; // 左下角的行
            while(col < N && row >= 0) {
                if(target == matrix[row][col])
                    return true;
                else if(target > matrix[row][col]) {
                    ++col;
                } else {
                    --row;
                }
            }
            return false;
        }
    };
    

    相关文章

      网友评论

          本文标题:搜索二维矩阵 II

          本文链接:https://www.haomeiwen.com/subject/tjamdctx.html