LC 速查

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
← 上一题 搜索插入位置在排序数组中查找元素的第一个和最后一个位置 下一题 →