[
dp
2d-array
]
BinarySearch 0487 Largest Square Matrix with Same Value
Problem statement
https://binarysearch.com/problems/Largest-Square-Matrix-with-Same-Value/
Solution
Similar to Leetcode 0221 Maximal Square, here dp(i, j) again is the size of largest square with left upper corner in (i, j).
Complexity
It is O(mn) for time and space.
Code
class Solution:
def solve(self, M):
m, n = len(M[0]), len(M)
@lru_cache(None)
def dp(i, j):
if i < 0 or j < 0: return 0
if len(set([M[i][j], M[i][j-1], M[i-1][j], M[i-1][j-1]])) != 1: return 1
return min(dp(i-1, j), dp(i, j-1), dp(i-1, j-1)) + 1
return max(dp(i, j) for i, j in product(range(n), range(m)))