搜索二维矩阵。编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:
- 每行中的整数从左到右按升序排列。
- 每行的第一个整数大于前一行的最后一个整数。
示例 1:
1 |
|
示例 2:
1 |
|
思路一
先通过二分查找找到哪一行,在通过二分查找在这一行中寻找 target
。时间复杂度 \(O(\log mn)\)。
1 |
|
思路二
将二维矩阵看成排序数组,数组的第 i
个数即矩阵的第 (i // n, i % n)
,通过二分查找,时间复杂度 \(O(\log mn)\)。
1 |
|