#!/usr/bin/env python __author__ = "bt3" ''' Search an Entry in a Matrix where the Rows and columns are Sorted In this 2D matrix, every row is increasingly sorted from left to right, and every column is increasingly sorted from top to bottom. The runtime is O(m+n). ''' def find_elem_matrix_bool(m1, value): found = False row = 0 col = len(m1[0]) - 1 while row < len(m1) and col >= 0: if m1[row][col] == value: found = True break elif m1[row][col] > value: col-=1 else: row+=1 return found def test_find_elem_matrix_bool(module_name='this module'): m1 = [[1,2,8,9], [2,4,9,12], [4,7,10,13], [6,8,11,15]] assert(find_elem_matrix_bool(m1,8) == True) assert(find_elem_matrix_bool(m1,3) == False) m2 = [[0]] assert(find_elem_matrix_bool(m2,0) == True) if __name__ == '__main__': test_find_elem_matrix_bool()