Binary Search:240. Search a 2D Matrix II

来源:互联网 发布:node.js实战 pdf 下载 编辑:程序博客网 时间:2024/06/08 07:47

这道题让我们在一个二维数组中快速的搜索的一个数字,这个二维数组各行各列都是按递增顺序排列的,是之前那道Search a 2D Matrix 搜索一个二维矩阵的延伸,那道题的不同在于每行的第一个数字比上一行的最后一个数字大,是一个整体蛇形递增的数组。所以那道题可以将二维数组展开成一个一位数组用一次二查搜索。而这道题没法那么做,这道题有它自己的特点。如果我们观察题目中给的那个例子,我们可以发现有两个位置的数字很有特点,左下角和右上角的数。可以从左下角开始搜索,如果左下角的数大于target,说明最下面这一行没有target,则往上移动一行,如果左下角的数小于target,说明最左边这一列没有target,则往右移动一行。如果搜索范围出了这个矩阵,说明没有搜到。

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


原创粉丝点击