今天的问题

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

示例:

输入: 1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0输出: 4

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/maximal-square 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

思路

同样,这种问题,也是由动态规划解决,题目中要求我们求解最大的正方形,那么,很显然可以想到,每一个正方形,都是由更小的正方形组成的。

但是本题还不能这么解,因为大的正方形,如果求出所有小的正方形,也是复杂度相当高的过程。

我们可以换个思路,

  1. 针对某一个点A,坐标为 (i,j),假设此点为我们要求的正方形的右下角的点,那么,我们只需要计算出这个点的最大边长,即可得出最大面积;
  2. 如何计算出最大边长呢,我们需要考虑一个问题,假如A点为我们最终需要的点,那么,显然以下三个点,也必须是1,分别为 (i-1, j), (i, j-1), (i-1,j-1),即A点的左/上/左上,三点
  3. 同时还要明确A点的最大边长,不可能超过上述三点位置的最小值加一,此条可能不太容易理解。假如(i-1,j)=2,(i-1,j-1)=4,那么,对于点A,横向的宽度,最多也就(2+1)
  4. 所以我们只需要取,三个点的最小值再加一,即可得到当前点的最大边长。

具体实现,见代码,整体思路清楚之后,实现起来就是很easy的事了

后记

大佬们动动手指赏个star https://github.com/severalfly/leetcode-leon

最大子段和动态规划_动态规划解决最大正方形问题相关推荐

  1. 最大子段和动态规划_动态规划解最大子段和问题

    1 动态规划 1.1 基本思想 动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题. 与分治法的区别在于,适用于动态规划算法求解的问题,经分解得到的子问题往往不是互相独立的:若用分 ...

  2. mysql动态规划_动态规划《开篇》

    动态规划(dynamic programing)和分治法类似,都是通过组合子问题的解来求解原问题的解.(在经典排序算法中的二路归并排序和快速排序都用到了分而治之的思想-分治法). 分治法是将原问题划分 ...

  3. 动态规划走楼梯_动态规划问题为什么要画表格?

    ❝ 本文是我的 91 算法第一期的部分讲义内容.91 算法第一期已经接近尾声,二期的具体时间关注我的公众号即可,一旦开放,会第一时间在公众号<力扣加加>通知大家. ❞ 动态规划可以理解为是 ...

  4. LQ训练营(C++)学习笔记_动态规划入门

    动态规划入门 五.动态规划入门 1.动态介绍 1.1动态规划基本思路 1.2 动态规划基本概念 1.2.1 阶段 1.2.2 状态 1.2.3 决策 1.2.4 状态转移方程 1.2.5 策略 1.3 ...

  5. 二维动态规划降维误差一般为多少_动态规划--5道题入门

    动态规划是由递归一步步优化出来的 递归–>记忆化递归–>动态规划 动态规划与其说是一个算法,不如说是一种方法论.该方法论主要致力于将合适的问题拆分成三个子目标--击破: 1.建立状态转移方 ...

  6. 动态规划算法思想解决找零钱问题

    前言 关于找零钱问题,网上已经有很多相关的资料以及优秀的文章博客等.这里写这篇博客的初衷很简单,就是为了方便自己,回过头来捡起这个知识能快一点,接受起来更易理解点:他人的文章写的再好,毕竟是别人的,学 ...

  7. Java使用动态规划算法思想解决01背包问题

    Java使用动态规划算法思想解决背包问题 背包问题是一种组合优化的NP完全问题.问题可以描述为:给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,我们如何选择,才能使得物品的总价格最高 动 ...

  8. ACM杂题——动态规划_背包问题

    ACM杂题K - I NEED A OFFER!--动态规划_背包问题优化解法 题目描述 Speakless很早就想出国,现在他已经考完了所有需要的考试,准备了所有要准备的材料,于是,便需要去申请学校 ...

  9. 牛客题单_动态规划课程状压dp习题

    牛客题单_动态规划课程状压dp习题 文章目录 牛客题单_动态规划课程状压dp习题 NC14732 锁 NC15034 德玛西亚万岁 NC16418 宝藏 NC17061 多彩的树 NC17890 方格 ...

最新文章

  1. java获取鼠标在窗口_Java获取窗口鼠标坐标以及键盘按键
  2. go语言 C语言系的更容易,语法接近。
  3. Spring Boot的Tomcat 启动详解
  4. 2021-10-27 PTA 数据结构 链表 两个有序链表序列的合并
  5. 【MyBatis使用】 mapper文件未编译 + statementType使用 + 返回结果字段顺序不一致 + 获取自增ID + 一个update标签批量更新记录
  6. sizeof()计算结构体的大小
  7. 计算机原理与技术索引的应用,经常学一点计算机底层原理系列之索引
  8. IE下打开ClearType后透明字体问题解决
  9. mysqluuid去除横岗
  10. Netflix的Hystrix使用教程
  11. 工作5年后我才发现:90%的技术问题,可以解决
  12. Wannafly交流赛1: B. 白兔的式子(组合数)
  13. 我决定把IDEA神器这些你可能不知道的但是又实用的小技巧分享出来,超赞!
  14. java系统找不到文件_java编译系统找不到指定文件
  15. 营业执照号码生成规则
  16. 三个常用的apk分析网站对比:VirusTotal、哈勃、摸瓜
  17. 项目开发的完整流程(详解版)
  18. 2021年下半年软件设计师考试下午题
  19. 5G的网络切片功能概述
  20. ARM:你从未听说过的英国最成功的科技公司

热门文章

  1. 金色金箔高品质纹理素材,将在你的下一个设计项目中被使用。
  2. 完美摄影作品展,它可以是你作品的风格
  3. 超绝万圣节主题设计海报背景,搞节日气氛靠它没问题!
  4. UI设计素材|社交界面模板
  5. 电商无线端秋季促销PSD分层海报,大战之前设计师准备好了么?
  6. 前端python与php_WEB前端、PHP、python这三个学习哪一个比较好?
  7. JDBC的DML增删改查的代码重构设计(下)
  8. unity怎么bake地形上的植被_“烧烤”是quot;barbecuequot;,那“烤串”的英语怎么说?一定要看看!...
  9. android webview权限申请_Android应用开发之android 6.0下webview的定位权限设置方法
  10. c查看变量类型_Python入门对象与变量