class Solution:
    def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:
        m, n = len(matrix), len(matrix[0])
        p = m * n
        l, r = 0, p - 1
 
        while l <= r:
            mid = l + (r - l) // 2
 
            row = mid // n
            col = mid % n
 
            if matrix[row][col] == target:
                return True
            elif target < matrix[row][col]:
                r = mid - 1
            else:
                l = mid + 1
        
        return False

Complexity

Time:
Space: