74. 搜索二维矩阵
https://leetcode-cn.com/problems/search-a-2d-matrix
题目描述
编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:
每行中的整数从左到右按升序排列。
每行的第一个整数大于前一行的最后一个整数。
示例 1:

方法 1:二分法
思路
如果我们能把二维数组打平成一维数组,那就是套个二分法模板的事啦。

剩下的问题是,怎么从一维数组的下标逆推二维数组的坐标?其实就是简单的数学计算。
我们将二维数组中的数字从左到右、从上到下,标记为第 0~(m x n) 个数字,用 pos 来表示。那么 pos 与数字在二维矩阵中坐标的关系如下:
pos: 第 n 个数字
cols: 二维矩阵的列数
复杂度分析
时间复杂度:$O(log(mn))$,$m n$ 是矩阵的大小。
空间复杂度:$O(1)$。
代码
JavaScript Code
Last updated
Was this helpful?