搜索二维矩阵 题目:编写一个高效的算法来搜索 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] ] 思路:1.初始化一个指向矩阵左下角的(row,col)指针。 2.找到目标并返回true(或者指针指向矩阵维度之外的(row.col)为止。) 3.如果当前指向的值大于目标值,则可以“向上”移动一行。否则,如果当前指向的值小于目标值,则可以移动一列。(行是从左到右排序的,所以当前值右侧的每个值都较大。因此,如果当前值已经大于目标值,它右边的每个值会比较大。) 4.这种搜索方式将始终在矩阵中找到目标。 复杂度分析: 时间复杂度:O(n+m)时间复杂度分析的关键是注意到在每次迭代时,行或列都会精确地递减/递增一次。由于行只能减少m² 空间复杂度:O(1),因为这种方法只处理几个指针,所以它的内存占用是恒定的。