AC1
AC1总是最暴力的 O(n2)
class Solution:
def searchMatrix(self, matrix, target):
for i in matrix:
for j in i:
if j == target:
return True
return False
AC2
分治法、二分 log ( m ∗ n ) \log (m*n) log(m∗n)
class Solution:
def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:
if not matrix:
return False
row = len(matrix)
col = len(matrix[0])
low = 0
high = row * col
while low < high:
mid = ( low + high ) // 2
if matrix[mid // col][mid % col] == target:
return True
elif matrix[mid // col][mid % col] < target:
low = mid + 1
else:
high = mid
return False
AC3
按照行列去除 , O ( m + n ) O(m+n) O(m+n)
class Solution:
def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:
if len(matrix) == 0 :
return False
row = 0
col = len(matrix[0]) - 1
while row < len(matrix) and col >=0 :
if matrix[row][col] < target:
row += 1
elif matrix[row][col] > target:
col -= 1
else:
return True
return False