Problem: 74. 搜索二维矩阵
文章目录
- 思路 & 解题方法
- 复杂度
- 二分两次
- 二分一次
思路 & 解题方法
可以二分一次,也可以二分两次。
复杂度
时间复杂度:
添加时间复杂度, 示例: O ( l o g n + l o g m ) O(logn + logm) O(logn+logm)
空间复杂度:
添加空间复杂度, 示例: O ( 1 ) O(1) O(1)
二分两次
class Solution:def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:m, n = len(matrix), len(matrix[0])top, but = 0, m - 1while top < but:mid = (top + but) // 2if matrix[mid][-1] < target:top = mid + 1elif matrix[mid][-1] >= target:but = midif but >= 0 and but < m:left, right = 0, n - 1l = matrix[but]while left <= right:mid = (left + right) // 2if l[mid] > target:right = mid - 1elif l[mid] < target:left = mid + 1else:return Truereturn False
二分一次
class Solution:def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:m, n = len(matrix), len(matrix[0])for l in matrix:if l[-1] < target:continueelse:left, right = 0, n - 1while left <= right:mid = (left + right) // 2if l[mid] < target:left = mid + 1elif l[mid] > target:right = mid - 1else:return Truebreakreturn False