• 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
    

      

  • 相关阅读:
    2019 年百度之星—初赛一 B题 Game
    蒲公英
    集训队8月17日
    CodeForces 550E Brackets in Implications 推理
    11076: 小P的集合 位运算
    树状数组区间修改版本模板
    Contest1692
    POJ
    树状数组进阶-区间修改+区间查询
    具体数学-第二章-和式
  • 原文地址:https://www.cnblogs.com/zhuozige/p/12885166.html
Copyright © 2020-2023  润新知