Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the following properties:
- Integers in each row are sorted in ascending from left to right.
- Integers in each column are sorted in ascending from top to bottom.
Example:
Consider the following matrix:
[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 21, 23, 26, 30] ]
Using Search Space Reduction Method
Given target = 5
, return true
.
Given target = 20
, return false
.
class Solution:
def searchMatrix(self, matrix, target):
"""
:type matrix: List[List[int]]
:type target: int
:rtype: bool
"""
if not matrix:
return False
rows = len(matrix)
cols = len(matrix[0])
if rows == 0 or cols ==0:
return False
row = rows-1
col = 0
while row >=0 and col < cols:
if target == matrix[row][col]:
return True
elif target < matrix[row][col]:
row -= 1
else:
col+=1
return False
Time Complexity : O(m+n)
Space Complexity : O(1)