zoukankan      html  css  js  c++  java
  • 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
    

      

  • 相关阅读:
    web.xml中/与/*的区别
    restController相关
    mvc:resources
    RequestMethod 相关
    Springside学习
    命名规范的反思
    C++ 构造中调用构造
    C++ 匿名对象的生命周期
    C++ 构造函数的对象初始化列表
    C++ 类的构造函数使用规则
  • 原文地址:https://www.cnblogs.com/zhuozige/p/12885166.html
Copyright © 2011-2022 走看看