From f1445a071f5d47dc91a9f48b26912bd900be0dd7 Mon Sep 17 00:00:00 2001 From: Prad Nukala Date: Wed, 26 Aug 2026 14:29:14 -0400 Subject: [PATCH] feat(work): add solution for LeetCode 74 Search a 2D Matrix problem --- work/Medium/Array/74.search-a-2d-matrix.py | 74 ++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 work/Medium/Array/74.search-a-2d-matrix.py diff --git a/work/Medium/Array/74.search-a-2d-matrix.py b/work/Medium/Array/74.search-a-2d-matrix.py new file mode 100644 index 0000000..484ee9c --- /dev/null +++ b/work/Medium/Array/74.search-a-2d-matrix.py @@ -0,0 +1,74 @@ +""" +74. Search a 2D Matrix +Difficulty: Medium +https://leetcode.com/problems/search-a-2d-matrix/ + +────────────────────────────────────────────────── + +You are given an m x n integer matrix matrix with the following two +properties: + + • Each row is sorted in non-decreasing order. + +• The first integer of each row is greater than the last integer of +the previous row. + +Given an integer target, return true if target is in matrix or false +otherwise. + +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 +""" + + +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