classSolution: defsearchMatrix(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 # 使用技巧执行降维坐标回打还原 x = matrix[mid // n][mid % n] if x == target: returnTrue if x < target: left = mid + 1 else: right = mid - 1 returnFalse
classSolution: defsearchMatrix(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
# 使用技巧执行降维坐标回打还原 x = matrix[mid // n][mid % n]
if x == target: returnTrue if x < target: left = mid + 1 else: right = mid - 1
returnFalse
defmain(): data = sys.stdin.read().strip().split() m, n = int(data[0]), int(data[1]) idx = 2 matrix = [] for i inrange(m): row = list(map(int, data[idx:idx+n])) matrix.append(row) idx += n
sol = Solution() result = sol.searchMatrix(matrix) print(result)