【LeetCode】T240 搜索二维矩阵 II C++

LeetCode 240. 搜索二维矩阵 II

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

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

思路一:

递归,对每个初始矩阵划分成四部分,每次搜索arr[m/2][n/2]位置的数,小于则继续找左上角,大于则省略左上角。但在数字为右下角时复杂度过高。且实现起来蛮复杂的。

思路二:

从右上角开始,对右上角的数n,若n小于target则当前行均小于target,故m++。若大于target则当前列均大于target,故n--。

    bool searchMatrix(vector<vector<int>>& arr, int target) {
        if(arr.empty() || arr[0].empty()) return false;
        int m = arr.size();
        int n = arr[0].size();
        int row = 0, clo = n-1;
        while(row < m && clo >= 0){
            if(arr[row][clo]==target) return true;
            else if(arr[row][clo] < target) row++;
            else clo--;
        }
        return false;
    }

猜你喜欢

转载自blog.csdn.net/PPPPluie/article/details/88837385