# Search a 2D Matrix II in Python

PythonServer Side ProgrammingProgramming

Suppose we have one m x n matrix. We have to write an efficient algorithm that searches for a value in that 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.

So if the matrix is like −

 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

If target is 5, then return true, if target is 20, then return false

To solve this, we will follow these steps −

• len := number of columns, c1 := 0, c2 := len – 1
• while true
• if matrix[c1, c2] = target, then return true
• else if matrix[c1, c2] > target, then c2 := c2 – 1, continue
• c1 := c1 + 1
• if c1 >= row count or c2 < 0, then return false
• return false

Let us see the following implementation to get better understanding −

## Example

Live Demo

class Solution:
def searchMatrix(self, matrix, target):
try:
length = len(matrix)
counter1, counter2 = 0, length-1
while True:
if matrix[counter1][counter2] == target:
return True
elif matrix[counter1][counter2]>target:
counter2-=1
continue
counter1 = counter1 + 1
if counter1 >= len(matrix) or counter2<0:
return False
except:
return False
ob1 = Solution()
print(ob1.searchMatrix([[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]], 5))

## Input

[[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]]
5

## Output

True