博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
221 Maximum Square
阅读量:5460 次
发布时间:2019-06-15

本文共 1849 字,大约阅读时间需要 6 分钟。

这道题有两个思路, 一是沿用085的maximum rectangle的思路, 稍作改进即可, 代码如下, 这个方法运行192ms

class Solution:    # @param {character[][]} matrix    # @return {integer}    def maximalSquare(self, matrix):        ans = 0        for i in range(0,len(matrix)):            for j in range(0, len(matrix[0])):                if i == 0:                    matrix[i][j] = int(matrix[i][j])                else:                    if matrix[i][j] == "0":                        matrix[i][j] = 0                    else:                        matrix[i][j] = matrix[i-1][j] + 1        for m in matrix:            ans = max(ans, self.largestRectangleArea(m))        return ans    def largestRectangleArea(self, height):        ans = 0        s = []        for i in range(0, len(height)):            left = i            while (s != []) and (s[-1][0] > height[i]):                left = s[-1][1]                l = min(i - left, s[-1][0])                ans = max(ans, l * l)                s.pop()            s.append([height[i], left])        right = len(height)        while s != []:            left = s[-1][1]            l = min(right - left, s[-1][0])            ans = max(ans, l * l)            s.pop()        return ans

看到tag中有 dp, 试着用dp 做了一个 运行时间是200ms, 看出在复杂度都是O(n*n)的情况下 时间区别不大 代码如下

class Solution:    # @param {character[][]} matrix    # @return {integer}    def maximalSquare(self, matrix):        ans = 0        m = len(matrix)        if m == 0:            return 0        n = len(matrix[0])        dp = [[0] * n for i in range(0,m)]        for i in range(0,m):            for j in range(0,n):                dp[i][j] = int(matrix[i][j])                if i and j and dp[i][j]:                    dp[i][j] = 1 + min(dp[i-1][j-1], dp[i-1][j], dp[i][j-1])                    ans = max(ans, dp[i][j] * dp[i][j])        return ans

 

转载于:https://www.cnblogs.com/dapanshe/p/4623428.html

你可能感兴趣的文章
八:Razor(MVC框架视图引擎)
查看>>
java代码编辑器 pdf文件预览 主流SSM 代码生成器 shrio redis websocket即时通讯
查看>>
final
查看>>
Win8下更改Chrome缓存目录
查看>>
django框架小技巧
查看>>
(八)8-3多线程共享变量
查看>>
Parameter配置文件获取
查看>>
[Operating System] {ud923} P3L1: Scheduling
查看>>
java后端发送http请求使用RestTemplate
查看>>
避免商品超卖的4种方案
查看>>
AtCoder - 1999 Candy Piles
查看>>
Checklist: 2019 05.01 ~ 06.30
查看>>
【最短路】Vijos P1022Victoria的舞会2
查看>>
(原创)大数据时代:基于微软案例数据库数据挖掘知识点总结(Microsoft 线性回归分析算法)...
查看>>
调整Tomcat的并发线程到5000+
查看>>
[Typescript 2] Nullable Types - Avoiding null and undefined Bugs
查看>>
[Javascirpt AST] Babel Plugin -- create new CallExpression
查看>>
_itemmod_strengthen_item
查看>>
UVa 10622 (gcd 分解质因数) Perfect P-th Powers
查看>>
hibernate SQL聚合查询
查看>>