HOT 100 › 索引 › B11 二分查找 Binary Search
LC 74搜索二维矩阵Search a 2D Matrix 中等
m×n 矩阵每行升序,且每行第一个数大于上一行最后一个数,判断 target 是否存在于矩阵中。
思路 行优先展开即一维有序数组,一次二分 [0, m*n-1],用 mid//n、mid%n 还原行列取值。O(log(mn))。
class Solution: def searchMatrix(self, matrix: List[List[int]], target: int) -> bool: m, n = len(matrix), len(matrix[0]) left, right = 0, m * n - 1 while left <= right: mid = (left + right) // 2 v = matrix[mid // n][mid % n] if v == target: return True if v < target: left = mid + 1 else: right = mid - 1 return False