class Solution:
def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:
n = len(matrix)
if n == 0: #排除边界情况
return False
m = len(matrix[0])
if m == 0:
return False
l, h = 0, m * n - 1 #左右起点
#二分
while l <= h:
mid = (l + h) // 2 #中点
if matrix[mid // m][mid % m] < target:
l = mid + 1
elif matrix[mid // m][mid % m] > target:
h = mid - 1
else: #mid找到
break
return matrix[mid // m][mid % m] == target