Search a 2D Matrix
Example
[
[1, 3, 5, 7],
[10, 11, 16, 20],
[23, 30, 34, 50]
]Solution
class Solution:
"""
@param matrix, a list of lists of integers
@param target, an integer
@return a boolean, indicate whether matrix contains target
"""
def searchMatrix(self, matrix, target):
m = len(matrix)
if m == 0:
return False
n = len(matrix[0])
if n == 0:
return False
start, end = 0, m * n - 1
while start + 1 < end:
mid = ( start + end ) / 2
x = mid / n
y = mid % n
if matrix[x][y] < target:
start = mid
else:
end = mid
x = start / n
y = start % n
if matrix[x][y] == target:
return True
x = end / n
y = end % n
if matrix[x][y] == target:
return True
return FalseLast updated