主页 > 互联网  > 

力扣hot100——搜索二维矩阵||m+n复杂度优化解法

力扣hot100——搜索二维矩阵||m+n复杂度优化解法

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

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

解题思路:

借助行和列有序特性,不断按行或者列缩小范围;途中数字表示每次执行,不同颜色框出的范围就是每次缩小后的区域,由于不是按行就是按列缩小,所以时间复杂度就是O(m+n)

class Solution { public: bool searchMatrix(vector<vector<int>>& matrix, int target) { // 边界缩小查找 // 从右上角开始缩小;先水平调整,然后竖直缩小 // 借助行和列有序特性,不断按行或者列缩小范围;由于不是按行就是按列缩小,所以时间复杂度就是O(m+n) int rows = matrix.size(),clos = matrix[0].size(); // row 行上限 clo 列上限 int row = 0,clo = clos - 1; if(target > matrix[rows-1][clos - 1]){ return false; } while(row < rows && clo >= 0){ if(matrix[row][clo] == target){ return true; } else if(matrix[row][clo] > target){ --clo; } else{ ++row; } } return false; } };

标签:

力扣hot100——搜索二维矩阵||m+n复杂度优化解法由讯客互联互联网栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“力扣hot100——搜索二维矩阵||m+n复杂度优化解法