74. 搜索二维矩阵
#暴力搜索
class Solution:
def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:
row = len(matrix)
col = len(matrix[0])
for i in range(row):
for j in range(col):
if matrix[i][j]==target:
return True
return False
#由于特性升序且后一行大于前一行的最后即全部升序
#采用二分法
class Solution:
def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:
l,r = 0,len(matrix)-1
while l<=r:
m = (l+r)//2
if matrix[m][0]>target:
r=m-1
elif matrix[m][0]<target:
l=m+1
else:
braek
if matrix[m][0] <= target <= matrix[m][-1]:
l, r = 0, len(matrix[m]) - 1
while l <= r:
n = (l+r) // 2
if matrix[m][n] > target:
r = n - 1
elif matrix[m][n] < target:
l = n + 1
else:
break
if matrix[m][n] == target:
return True
else:
return False
else:
return False