美文网首页
最大正方形

最大正方形

作者: hustyanye | 来源:发表于2019-07-22 20:03 被阅读0次

https://leetcode-cn.com/explore/interview/card/bytedance/246/dynamic-programming-or-greedy/1028/

image.png

动态规划的思路
其实所有动态规划的思路,都是要找规律。这个题只要找到了规律,就很简单。
对于每个节点 a[i][j],加入他为1,那么他能组成的最大正方形的边长,取决于他周边的几个节点a[i-1][j],a[i][j-1],a[i-1][j-1],如果这三个都能组成边长为2的正方形,那么加上他,就变成了边长为3的正方形。但是这三个有1个不能组成,那么加上这个节点也无法组成。
所以 a[i][j] = min(a[i-1][j],a[i][j-1],a[i-1][j-1]) + 1
然后正方形的面积就是周长的平方。
代码如下:

class Solution(object):
    def maximalSquare(self, matrix):
        """
        :type matrix: List[List[str]]
        :rtype: int
        """
        if not matrix:
            return 0
        pos = []
        for i in range(0,len(matrix)):
            pos.append([0]*len(matrix[i]))
        # 对第一行赋值:
        result = 0
        for i in range(0,len(matrix[0])):
            if matrix[0][i]=='1':
                pos[0][i] = 1
                result = 1
        # 对第一列赋值
        for i in range(0,len(matrix)):
            if matrix[i][0] == '1':
                pos[i][0] = 1
                result = 1
        
        for i in range(1,len(matrix)):
            for j in range(1,len(matrix[0])):
                if matrix[i][j] == '1':
                    pos[i][j] = min(pos[i-1][j],pos[i][j-1],pos[i-1][j-1]) + 1
                    result = max(result,pos[i][j]*pos[i][j])
        return result

相关文章

  • 最大正方形

    在一个二维01矩阵中找到全为1的最大正方形您在真实的面试中是否遇到过这个题?Yes样例1 0 1 0 01 0 1...

  • 最大正方形

    题目描述 https://leetcode-cn.com/problems/maximal-square/ 解 思...

  • 最大正方形

    标签:动态规划 在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。 示例: 输入...

  • 最大正方形

    题目: 题目的理解: 找到1,则进行判断正方形的一圈是否都是1. 然后记录面积。 python实现 想看最优解法移...

  • 最大正方形

    https://leetcode-cn.com/explore/interview/card/bytedance/...

  • 最大正方形

    简书来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/maxi...

  • 最大正方形

    题目描述:在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。 示例:输入:1 0...

  • 最大正方形

    题目 在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。 示例:输入:1 0 1...

  • 圆形与正方面积比值相关比值相关规律

    1、在正方形内画最大圆,正方形的面积与圆的面积比值是1:0.785。 因为正方形面积=边长X边长,,圆面积=πr²...

  • [Leetcode] 221. 最大正方形

    221. 最大正方形 来源: 221. 最大正方形 1. 题目描述 在一个由 0 和 1 组成的二维矩阵内,找到...

网友评论

      本文标题:最大正方形

      本文链接:https://www.haomeiwen.com/subject/anrglctx.html