search-2d-matrix py3

This commit is contained in:
2022-04-26 00:33:35 +05:30
parent 6925c6815f
commit 382be1e683
2 changed files with 71 additions and 0 deletions

View File

@@ -0,0 +1,42 @@
class Solution:
def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:
'''
Two binary searches, first across rows and then
across columns to quickly find the target
'''
mid = -1
start, end = 0, len(matrix) - 1
# Figure out which row the number belongs to
while start <= end:
mid = (start + end) // 2
if target > matrix[mid][-1]:
start = mid + 1
elif target < matrix[mid][0]:
end = mid - 1
else:
break
# If we never managed to find a row, that means number
# doesn't exist
if not start <= end:
return False
# The row to search
row = matrix[mid]
start, end = 0, len(row) - 1
while start <= end:
mid = (start + end) // 2
if target == row[mid]:
return True
elif target > row[mid]:
start = mid + 1
else:
end = mid - 1
return False