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?