221. Maximal Square
class Solution:
def maximalSquare(self, matrix: List[List[str]]) -> int:
M, N = len(matrix), len(matrix[0])
dp = [[0 for _ in range(N+1)] for _ in range(M+1)]
mx = 0
for i in range(1, M+1):
for j in range(1, N+1):
if matrix[i-1][j-1] == '0':
continue
dp[i][j] = min(dp[i-1][j-1], dp[i-1][j], dp[i][j-1]) + 1
mx = max(mx, dp[i][j])
return mx * mx