题目
描述
给定一个由’0’和’1’组成的2维矩阵,返回该矩阵中最大的由’1’组成的正方形的面积,输入的矩阵是字符形式而非数字形式。
数据范围:矩阵的长宽满足 0≤n≤20,矩阵中的元素属于 {‘1’,‘0’}
思路
动态规划,主要是转移公式。
代码
python版本:
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 最大正方形
# @param matrix char字符型二维数组
# @return int整型
#
class Solution:
def solve(self , matrix: List[List[str]]) -> int:
# write code here
if not matrix:
return 0
h = len(matrix)
w = len(matrix[0])
dp = [[0 for i in range(w+1)] for j in range(h+1)]
max_side = 0
for i in range(1, h+1):
for j in range(1, w+1):
if(matrix[i-1][j-1]=='1'):
dp[i][j] = min(dp[i-1][j], dp[i][j-1], dp[i-1][j-1])+1
if(dp[i][j]>max_side):
max_side = dp[i][j]
return max_side**2
c++版本:
无