首页 > 编程语言 > 详细

Leetcode练习(Python):动态规划类:第221题:最大正方形:在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。

时间:2020-05-13 22:41:22      阅读:193      评论:0      收藏:0      [点我收藏+]

题目:

最大正方形:在一个由 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

  

Leetcode练习(Python):动态规划类:第221题:最大正方形:在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。

原文:https://www.cnblogs.com/zhuozige/p/12885166.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!