问题描述:

题目链接:221 Maximal Square

问题找解决的是给出一个M*N的矩阵, 只有'1', '0',两种元素; 需要你从中找出 由'1'组成的最大正方形。恩, 就是这样。

我们看到, 这道题目的标签还是DP, 那么问题的关键就是要找到一个符合判断是否为正方形的递推式。

  老套路, 先看基本型, 对于一个2*2的正方形,对于右下角的元素(1,1)而言, 他的上(0,1), 左(1,0), 左上(0,0)三个元素应该都是'1',

如此才能够组成一个合规的正方形; 那么如果是一个3*3呢, 首先他必然是一个2*2, 然后左加一列,上添一行,就由一个2*2成了一个3*3型,所以, 对于在矩阵中的

任意一个点'1'只要不断匹配他的左边列和上边行都是‘1’, 并计数后再往外匹配一层,知道出现'0'或者到达边界即可, 然后从每个点中选出匹配到的最大层数, done!

  基本套路就是如此, 但是每个点都走一遍就是M*N个点, 后每个点都再外面一层逐个匹配, 时间复杂度消耗不起,O(M^2*N^2), 一般考虑M*N,直接近似4次方的复杂度,

肯定不可取。既然从后往前不靠谱, 那我们从前往后推又如何呢?

  除去边界(即第一行与第一列),对于任意一个matrix[i][i],他所处的方形应该前一层决定:左边(matrix[i][j-1]), 上边(matrix[i-1][j]),左上(matrix[i-1][j-1])决定,

同样的, 我们也需要一个结果矩阵 ret[M][N] 记录每个对应点所处的方形层数。

  再看最基本型:对于在matrix[1][1]出的点, 他的左上外层全为'1', 故这个点在ret[1][1]就+1,结果记为2,

即:if: (top != '0', left!='0', top_left!='0')

  then: ret[i][j] = matrix[i][j]+1;

  在考虑到这一步的时候, 觉得已经ok了, 立刻在页面写好代码提交, 结果却是一个大大的Wrong Answer! 当下觉得没错啊, 对于每个点是不是处于方形都做了

判断, 而且判定了之后还把层数+1嘞,于是输出结果矩阵一看:

  

很明显, 对于层数计算, 并没有获取前一层的都处于的方形层数, 要知道,假设在[i][j]为止是属于3*3的方形, 那么必然有点[i-1][j],[i][j-1], [i-1][j-1]这3个都至少属于

2*2的方形, 可能用图示更清楚:

  left:top:left_top:

所以上面的情形如果在递推产生的ret矩阵中就是这个样子:

    left:top:left_top:

所以, 更正后的递推式应该是:

  

再次提交, Accepted!

最后只解决的代码:

  

  另外, 还有一道相近的链接在这里), 这次不定形状了, 你是一行, 还是正方形没有限制了, 难度也提升为Hard级别,

但核心思想肯定没变, 各位额可以尝试下, 此题明后日贴个人解决思路。

  最后还是老话, 本人贴上来的解法和思路仅作是记录,或者还可以向各位看官交流学习,有帮助就好。

leetcode每日解题思路 221 Maximal Square的更多相关文章

  1. Java for LeetCode 221 Maximal Square

    Given a 2D binary matrix filled with 0's and 1's, find the largest square containing all 1's and ret ...

  2. 【LeetCode】221. Maximal Square

    Maximal Square Given a 2D binary matrix filled with 0's and 1's, find the largest square containing ...

  3. 求解最大正方形面积 — leetcode 221. Maximal Square

    本来也想像园友一样,写一篇总结告别 2015,或者说告别即将过去的羊年,但是过去一年发生的事情,实在是出乎平常人的想象,也不具有代表性,于是计划在今年 6 月份写一篇 "半年总结" ...

  4. 【刷题-LeetCode】221. Maximal Square

    Maximal Square Given a 2D binary matrix filled with 0's and 1's, find the largest square containing ...

  5. leetcode array解题思路

    Array *532. K-diff Pairs in an Array 方案一:暴力搜索, N平方的时间复杂度,空间复杂度N 数组长度为10000,使用O(N平方)的解法担心TLE,不建议使用,尽管 ...

  6. [LeetCode] 3Sum 解题思路

    Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all un ...

  7. 【LeetCode】221. Maximal Square 解题报告(Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 动态规划 日期 题目地址: https://leet ...

  8. [LeetCode] 221. Maximal Square 最大正方形

    Given a 2D binary matrix filled with 0's and 1's, find the largest square containing all 1's and ret ...

  9. (medium)LeetCode 221.Maximal Square

    Given a 2D binary matrix filled with 0's and 1's, find the largest square containing all 1's and ret ...

随机推荐

  1. gcc编译常用选项

    我的博客:www.while0.com GDB调试: -g 生成的可执行文件才可以用gdb调试 (建议在发行版中用strip filename 来把这些调试信息去除) 开始调试. 以下是基础调试命令: ...

  2. BZOJ_3039_玉蟾宫_(动态规划+悬线法)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=3039 n*m的矩阵由R和F组成,求全是F的子矩阵的大小的三倍. 分析 悬线法: 浅谈用极大化思 ...

  3. linux中cat more less head tail 命令区别

    1.cat 显示文件连接文件内容的工具: cat 是一个文本文件查看和连接工具.查看一个文件的内容,用cat比较简单,就是cat 后面直接接文件名. 比如:[root@localhost ~]# ca ...

  4. [转]关于WM_NCHITTEST消息

    http://www.cnblogs.com/GnagWang/archive/2010/09/12/1824394.html 我为了移动一个无标题栏的窗体,使用了WM_NCHITTEST消息,这个消 ...

  5. Cocos2d-x ios 下http请求的另一种实现

    简单描述下需求:游戏要加入事件log,比如玩家升到10级:创建角色:或是,触发这些事件后要求客户端忘后台抛送一条log信息.一般情况下,我们可以直接使用cocos自带的HttpClient(底层用li ...

  6. C#学习:集合、迭代、泛型(1)

    一.System.Collections名称空间下几个接口表征着集合的功能: 1.IEnumerable:表征着迭代功能 public interface IEnumerable { IEnumera ...

  7. Kafka系列(一)安装和配置说明

    单机模式 修改kafak安装文件中 .../kafka_2.9.2-0.8.1.1/config 下面的server.properties 配置文件 1.broker.id=0   [默认不用修改,该 ...

  8. Could not load db driver class: com.mysql.jdbc.Driver解决方法

    14/03/26 22:43:24 ERROR sqoop.Sqoop: Got exception running Sqoop: java.lang.RuntimeException: Could ...

  9. get方法

    public string HttpGet(string Url, string postDataStr) { HttpWebRequest request = (HttpWebRequest)Web ...

  10. windows 7 下安装 IIS 和 ArcGis Server 9.3 遇到的问题及解决方法

    windows 7 下安装 IIS 和 ArcGis Server 9.3 遇到的问题及解决方法 分类: ArcGIS server 计算机2012-07-31 14:17 631人阅读 评论(0)  ...