思路链接:
class Solution(object):
def maximalSquare(self, matrix):
"""
:type matrix: List[List[str]]
:rtype: int
"""
if matrix == []:
return 0
m = len(matrix)
n = len(matrix[0])
dp = [[0]*n for _ in range(m)]
max_side = 0
for i in range(m):
for j in range(n):
dp[i][j] = int(matrix[i][j]) # 第一行第一列
if i and j and dp[i][j]:
dp[i][j] = min(dp[i][j-1], dp[i-1][j], dp[i-1][j-1]) + 1
max_side= max(dp[i][j], max_side)
return max_side * max_side