zoukankan      html  css  js  c++  java
  • 436. 最大正方形

    436. 最大正方形

    中文English

    在一个二维01矩阵中找到全为1的最大正方形, 返回它的面积.

    样例

    样例 1:

    输入:
    [
      [1, 0, 1, 0, 0],
      [1, 0, 1, 1, 1],
      [1, 1, 1, 1, 1],
      [1, 0, 0, 1, 0]
    ]
    输出: 4
    

    样例 2:

    输入: 
    [
      [0, 0, 0],
      [1, 1, 1]
    ]
    输出: 1
    
     
     
    输入测试数据 (每行一个参数)如何理解测试数据?

     动态规划 + 滚动数组

    class Solution:
        """
        @param matrix: a matrix of 0 and 1
        @return: an integer
        """
        def maxSquare(self, matrix):
            # write your code here
            #经典的dp问题
            if not matrix: return 0
            
            #以当前点作为正方形的右下角,然后计算正方形的边长,滚动数组
            len_x, len_y = len(matrix), len(matrix[0])
            dp = [[0 for _ in range(len_y)], [0 for _ in range(len_y)]]
            result = 0 
            boder = 0 
            
            #边界情况
            for j in range(len_y):
                dp[0][j] = matrix[0][j]
    
            if len_x == 1:
                boder = max(matrix[0])
                
            #计算顺序
            for i in range(1, len_x):
                #边界情况
                dp[i%2][0] = matrix[i][0]
                for j in range(1, len_y):
                    if (matrix[i][j] == 0):
                        dp[i%2][j] = 0
                        continue
                    
                    dp[i%2][j] = min(dp[(i - 1)%2][j], dp[i%2][j - 1], dp[(i - 1)%2][j - 1]) + 1
                boder = max(boder, max(dp[i%2]))
            
            return boder*boder
  • 相关阅读:
    arcgis 线转面
    CAD 命令
    一台服务器挂多个网站
    请教:gridview
    转折
    网站开发标准
    [导入]简单网站开发
    过年了!
    web.config的问题
    java 计算程序执行时间
  • 原文地址:https://www.cnblogs.com/yunxintryyoubest/p/13312643.html
Copyright © 2011-2022 走看看