Python Leetcode 221. Maximal Square 動態規劃問題

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章