LeetCode 4: 74 - Search a 2D Matrix

Almost the same as binary search problem
leetcode
Author

Tony Phung

Published

February 10, 2024

link to my leetcode profile

1. Problem Description

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.

2. Code

  1. Flatten array then
  2. Use code from binary search
class Solution:
    def searchMatrix(self, matrix: [[int]], target: int) -> bool:
        # its a ascending matrix,
        # 1. turn into array then 
        # 2. apply binsearch 
        arr = [element for row in matrix for element in row]

        l = 0
        r = len(arr)

        if r==1:
            if target == l[0]:
                return True
            else: return False

        while l<r:
            m = (l+r)//2
            if arr[m]<target:
                l = m + 1                
            elif arr[m]>target:
                r = m
            else:                
                return True
        return False


soln = Solution()
# soln.searchMatrix([[1,3,5,7],[10,11,16,20],[23,30,34,60]],3)
# soln.searchMatrix([[1,3,5,7],[10,11,16,20],[23,30,34,60]],13)
# soln.searchMatrix([[1,3]],3)

3. Submit

Go to Main Blog
Go to LeetCode Blog