• 边工作边刷题:70天一遍leetcode: day 67


    Maximal Square

    要点:这题猛一看和Maximal Rectangle很像,其实不然。因为正方形边长相等,实际可以降维。如图,A,B,C三部分构成了除当前点之外正方形的三个部分,所以如果当前点为’1’,那么上面三部分的最小值(其实等同于一边的最小值,所以dp中存的就是一边的长度)为当前点正方形的大小。
    图:TODO
    错误点:

    • 这题是常见的更新max的pattern而不是返回dp[m][n]
    • 因为dp中存的是一维的,所以结果要平方
    class Solution(object):
        def maximalSquare(self, matrix):
            """
            :type matrix: List[List[str]]
            :rtype: int
            """
            m = len(matrix)
            if m==0: return 0
            n = len(matrix[0])
            dp = [[0]*n for i in xrange(m)]
            dp[0][0]=int(matrix[0][0]=='1')
            maxValue=dp[0][0]
            for i in xrange(1, m):
                dp[i][0]=int(matrix[i][0]=='1')
                maxValue = max(maxValue, dp[i][0])
                
            for i in xrange(1, n):
                dp[0][i]=int(matrix[0][i]=='1')
                maxValue = max(maxValue, dp[0][i])
            
            for i in xrange(1,m):
                for j in xrange(1,n):
                    dp[i][j]=min(dp[i-1][j],dp[i][j-1],dp[i-1][j-1])+1 if matrix[i][j]=='1' else 0
                    maxValue = max(maxValue, dp[i][j])
            
            return maxValue*maxValue
    
    
  • 相关阅读:
    二叉树操作
    jQuery下拉列表插件 jQselectable
    DeDeCMS常用标签代码整理汇总
    用DEDECMS做手机网站
    DedeCMS模板文件结构
    用aspnet_compiler编译(发布)网站
    把网站提交到搜索引擎
    jGrowl 制作消息弹出框
    关于标签 XUACompatible
    jQuery下拉框插件 FlexBox
  • 原文地址:https://www.cnblogs.com/absolute/p/5690350.html
Copyright © 2020-2023  润新知