Python Leetcode 221. Maximal Square 動態規劃問題
這種題目肯定要用動態規劃,像這種矩陣類型的,那麼接下來就是找遞推公式。
對於動態規劃我也沒有什麼好的方法,就多做一點題吧,就有感覺了。
Done
class Solution(object):
def maximalSquare(self, matrix):
"""
:type matrix: List[List[str]]
:rtype: int
"""
if len(matrix)==0 or len(matrix[0]) == 0:
return 0
maxside = 0
row, col = len(matrix), len(matrix[0])
dp = [[0] * col for _ in range(row)]
for i in range(row):
for j in range(col):
if matrix[i][j]=="1":
if i==0 or j==0:
dp[i][j]=1
else:
dp[i][j] = min(dp[i-1][j-1], dp[i-1][j], dp[i][j-1])+1
maxside=max(maxside,dp[i][j])
maxsquare = maxside * maxside
return maxsquare