74. 搜索二维矩阵
1.题目
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/da4c847c30831b3f7ab8d247807d80d8.png)
2.我的解决方案
class Solution:
def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:
i, j = 0, len(matrix[0])-1
while j>=0 and i<len(matrix):
if target > matrix[i][j]:
i += 1
elif target < matrix[i][j]:
j -= 1
else:
return True
return False
- 时间复杂度:
O
(
n
)
O(n)
O(n)
- 空间复杂度:
O
(
1
)
O(1)
O(1)
3.官方的解决方案
class Solution:
def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:
m, n = len(matrix), len(matrix[0])
low, high = 0, m*n-1
while low <= high:
mid = low + (high-low)//2
num = matrix[mid//n][mid%n]
if target < num:
high = mid - 1
elif target > num:
low = mid + 1
else:
return True
return False
- 时间复杂度:
O
(
l
o
g
m
n
)
O(logmn)
O(logmn)
- 空间复杂度:
O
(
1
)
O(1)
O(1)