编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性:
- 每行的元素从左到右升序排列。
- 每列的元素从上到下升序排列。
示例:
现有矩阵 matrix 如下:
1 | [ |
给定 target = 5,返回 true。
给定 target = 20,返回 false。
方法一:暴力法
1 | class Solution: |
时间复杂度为$O(m \times n)$,空间复杂度为O(1)。
方法二:二分查找(行)
由于每行的元素从左到右升序排列,因此,在遍历每行时,可以使用二分法进行查找。
1 | class Solution: |
时间复杂度为$O(m \log_2 n)$,空间复杂度为O(1)。
方法三:二分查找(行和列)
1 | class Solution: |
时间复杂度为$O(\log_2 (n!))$,空间复杂度为O(1)。
方法四:
1 | class Solution: |
时间复杂度为O(m+n),空间复杂度为O(1)。