class Solution:
def searchMatrix(self, matrix: [[int]], target: int) -> bool:
# its a ascending matrix,
# 1. turn into array then
# 2. apply binsearch
= [element for row in matrix for element in row]
arr
= 0
l = len(arr)
r
if r==1:
if target == l[0]:
return True
else: return False
while l<r:
= (l+r)//2
m if arr[m]<target:
= m + 1
l elif arr[m]>target:
= m
r else:
return True
return False
= Solution()
soln # 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)
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
- Flatten array then
- Use code from binary search