搜索二维矩阵实际就是二维化的排序数组,因此使用二分查找就能实现(O)log n,做好二维数组索引和数组索引的转换就可以了
class Solution(object):
def searchMatrix(self, matrix, target):
if target==matrix[0][0]or target==matrix[-1][-1]:return True
n=len(matrix[0])
l=0
r=len(matrix)*n-1
while l<r:
mid=(l+r)/2
if target ==matrix[mid/n][mid%n]:
return True
elif target<matrix[mid/n][mid%n]:
r=mid
else:
l=mid+1
return False