Search a 2D Matrix
[
[1, 3, 5, 7],
[10, 11, 16, 20],
[23, 30, 34, 50]
]Binary Search Twice
class Solution(object):
def searchMatrix(self, matrix, target):
"""
:type matrix: List[List[int]]
:type target: int
:rtype: bool
"""
if len(matrix) == 0 or len(matrix[0]) == 0:
return False
row = len(matrix)
column = len(matrix[0])
start,end=0, row-1
while start+1<end:
mid = (start+end)/2
value = matrix[mid][0]
if value < target:
start = mid
else:
end = mid
if matrix[end][0]>target:
row=start
else:
row = end
start, end = 0, column-1
while start+1 < end:
mid = (start+end)/2
value = matrix[row][mid]
if value < target:
start = mid
else:
end = mid
if matrix[row][start] == target or matrix[row][end]==target:
return True
return FalseBinary Search Once:
Last updated