74. 搜索二维矩阵
分析
由于矩阵按行列有序,可以将整个二维矩阵视为一个长度为 n * m 的一维数组,并在这个一维数组上进行二分查找
- 
矩阵映射为一维数组: - 矩阵的第 i行和第j列的元素matrix[i][j],在一维数组中对应的索引为i * m + j
- 反之,一维数组的索引 k对应矩阵中的元素为matrix[k / m][k % m]
 
- 矩阵的第 
- 
二分查找: - 初始时,定义查找区间的左右端点为 l = 0和r = m * n - 1
- 每次取中点 mid,将其映射到二维矩阵元素matrix[mid / m][mid % m],与target比较:- 若该值大于等于 target,收缩右边界r = mid
- 若该值小于 target,收缩左边界l = mid + 1
 
- 若该值大于等于 
- 循环结束时,检查索引 r对应的矩阵元素是否等于target
 
- 初始时,定义查找区间的左右端点为 
时间复杂度
每次二分查找都会将查找范围缩小为原来的一半,总体复杂度为 O(log(m * n))
空间复杂度
空间复杂度为 O(1)
C++代码
|  |  | 
