Leetcode練習(Python):動態規划類:第221題:最大正方形:在一個由 0 和 1 組成的二維矩陣內,找到只包含 1 的最大正方形,並返回其面積。


題目:

最大正方形:在一個由 0 和 1 組成的二維矩陣內,找到只包含 1 的最大正方形,並返回其面積。

思路:

思路來源於官方,自己的思路把題做的太難了,也做不對,直接借助一個矩陣來存放最大的面積,設計程序需要一定的小技巧。

程序:

class Solution:
    def maximalSquare(self, matrix: List[List[str]]) -> int:
        if not matrix:
            return 0
        rows = len(matrix)
        columns = len(matrix[0])
        if rows == 0 or columns == 0:
            return 0
        max_side = 0
        auxiliary = [[0] * columns for _ in range(rows)]
        for index1 in range(rows):
            for index2 in range(columns):
                if matrix[index1][index2] == '1':
                    if index1 == 0 or index2 == 0:
                        auxiliary[index1][index2] = 1
                    else:
                        auxiliary[index1][index2] = min(auxiliary[index1 - 1][index2 - 1], auxiliary[index1][index2 - 1], auxiliary[index1 - 1][index2]) + 1
                    max_side = max(max_side, auxiliary[index1][index2])
        result = max_side ** 2
        return result

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM