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

示例:

输入: 1 0 1 0 0
1 0 1 1 1
1 1 1 1 1
1 0 0 1 0输出: 4

思路
问题要找到最大全为1的正方形。p(i,j)点为右下角的正方形,计算全为1的正方形的边长。很明显与p(i-1, j), p(i-1, j-1), p(i, j-1)三个点有关。
p(i,j) = 三个点中的最小值加1.。画个图更好理解。

 int maximalSquare(vector<vector<char>>& matrix) {//dp[i][j]   以i,j为右下角的正方形的边长int rows = matrix.size();if(rows==0){return 0;}int cols = matrix[0].size();vector<vector<int>> dp(rows, vector<int>(cols));int maxsize = 0;for(int i = 0; i < rows; ++i){for(int j = 0; j < cols; ++j){if(matrix[i][j] == '1'){int left = max(0, i-1);int top = max(0, j-1);dp[i][j] = min(dp[left][j], min(dp[i][top], dp[left][top])) + 1;}maxsize = max(maxsize, dp[i][j]);}}return maxsize*maxsize;}

leetcode题库221-- 最大正方形相关推荐

  1. LeetCode题库第867题 转置矩阵

    LeetCode题库第867题 转置矩阵 LeetCode题库第867题 转置矩阵 我首先想到的方法是新建一个二维的矩阵,然后遍历原来的矩阵,将每一个元素放在新矩阵中该放的位置: // javapub ...

  2. LeetCode题库第888题 公平的糖果棒交换

    LeetCode题库第888题 公平的糖果棒交换 LeetCode第888道题 公平的糖果棒交换 首先,题目中说他们两个人的糖果的总数量是不一样的,并且要将A中的一个糖果和B的一个糖果交换后使得他们两 ...

  3. LeetCode题库第2题 两数相加

    两数相加 LeetCode题库第二题 两数相加 看完题目,就可以将题目抽象为三个指针,前两个指针是l1和l2,后一个指针是我们要求的,这三个指针同时移动,由于可能会产生进位,所以可以用一个变量来存储这 ...

  4. LeetCode题库第1题 两数之和

    两数之和 LeetCode题库第1题 两数之和 看到题,我就想到了暴力法: public int[] force(int[] nums,int target) {for (int i = 0; i & ...

  5. LeetCode题库整理【Java】—— 3 无重复字符的最长子串

    LeetCode题库整理[Java] ## 3 无重复字符的最长子串 题目:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" ...

  6. LeetCode题库整理【Java】—— 2 两数相加

    LeetCode题库整理[Java] 2.两数相加 题目:给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果, ...

  7. LeetCode题库整理【Java】—— 7整数反转

    LeetCode题库整理[Java] 7.整数反转 题目:给出一个32位的有符号整数,你需要将这个这个整数中每位上的数字进行反转. 示例1: 输入: 123 输出: 321 示例2: 输入: -123 ...

  8. LeetCode题库整理【Java】—— 1两数之和

    LeetCode题库整理[Java] 1.两数之和 题目:给定一个整数数组和一个目标值,找出数组中和为目标值的两个数.你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用. 示例: 给定 nu ...

  9. leetcode题库:4.两个排序数组的中位数

    题目: /**   *leetcode题库:4. 求两个排序数组的中位数  *  *  给定两个大小为 m 和 n 的有序数组 nums1 和 nums2 .  *  请找出这两个有序数组的中位数. ...

  10. LeetCode 题库 全 JAVA 解题---771.宝石与石头

    LeetCode 题库 全 JAVA 解题 771.宝石与石头 原题回顾: 给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头. S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥 ...

最新文章

  1. 关于常见的底层驱动源码资料
  2. 常考数据结构与算法:两数之和
  3. socket阻塞导致拿不到信息
  4. sql 问号的使用 php_PHP中bindParam和bindValue的区别
  5. Python random 模块 - Python零基础入门教程
  6. Mybatis源码分析之(三)mapper接口底层原理(为什么不用写方法体就能访问到数据库)
  7. 极致CMS个人博客企业官网模板
  8. SQL关键字Pivot(行变列)
  9. 本特利振动前置器330180-51-00
  10. ASP.NET中EnableViewState
  11. 三维全景从制作到上传
  12. 合适新手入门的串口屏学习分享
  13. 禁止百度转码和百度快照缓存的META声明
  14. 一、markdown 常见公式
  15. 音乐app项目开发(一)
  16. (第二章)HTML基本标记
  17. 苹果xr截屏怎么截_原来苹果手机可实现长截屏!学到了,以后不用羡慕别人手机了...
  18. Redis集群(读写分离、哨兵机制、Cluster集群)
  19. android6.0.1隐藏功能,安卓6.0系统界面调谐器怎么使用?安卓6.0隐藏功能开启和使用方法[多图]...
  20. Docker 介绍、安装、基础搭建 --01

热门文章

  1. 用户体验标准_产品体验问题评级标准——如何给产品体验问题定级?
  2. 仿苹果涂鸦软件_有没有仿ios12备忘录便签软件?
  3. python 训练好的模型怎么保存_MNIST数据集训练完如何保存成模型文件?
  4. 利用server酱推送消息和定时库:APScheduler
  5. 动态规划之多重部分和问题
  6. 优麒麟(Ubuntu Kylin)安装日志
  7. 第七讲 塔木德破产分配法练习题
  8. Python——如何屏蔽函数内部的print输出
  9. Java中Object转换为List类型
  10. 【Qt教程】1.4 - Qt5第一个控件 按钮QPushButton 指定父对象