--- title: '74. Search a 2D Matrix' description: 'You are given an m x n integer matrix matrix with the following two properties:' sidebar: label: 'Search a 2D Matrix' badge: 'Medium' --- Binary Search ::::warning You must write a solution in O(log(m * n)) time complexity. :::: ### Example 1: - Input: `matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 3` - Output: `true` ### Example 2: - Input: `matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 13` - Output: `false` ### Constraints: - `m == matrix.length` - `n == matrix[i].length` - `1 <= m, n <= 100` - `-10^4 <= matrix[i][j], target <= 10^4` ## Solution ```py class Solution: def searchMatrix(self, matrix: List[List[int]], target: int) -> bool: ROWS, COLS = len(matrix), len(matrix[0]) top, bot = 0, ROWS - 1 while top <= bot: row = (top + bot) // 2 if target > matrix[row][-1]: top = row + 1 elif target < matrix[row][0]: bot = row - 1 else: break if not (top <= bot): return False row = (top + bot) // 2 l, r = 0, COLS - 1 while l <= r: m = (l + r) // 2 if target > matrix[row][m]: l = m + 1 elif target < matrix[row][m]: r = m - 1 else: return True return False ```