题目描述

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

示例:

输入: 

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

解题思路

动态规划思想,从左上依次遍历到右下,记录以当前位置为右下角顶点的最大正方形的边长,对每个位置作如下操作:

  • 若该位置为0,直接跳过
  • 若该位置为1,则分为两种情况:
    • 若其为左边界或上边界,则更新最大边长为当前数字;
    • 否则检查其紧邻左方、紧邻上方和左上角对应的数字,取他们的最小值再加1即为以当前位置为右下角顶点的正方形边长,并更新此时的最大正方形边长

代码

 class Solution {
public:
int maximalSquare(vector<vector<char>>& matrix) {
int maxN = ;
for(int i = ; i < matrix.size(); i++){
for(int j = ; j < matrix[].size(); j++){
if(matrix[i][j] == '') continue;
if(j == || i == ){
if(matrix[i][j] - '' > maxN) maxN = matrix[i][j] - '';
}
else if(matrix[i - ][j - ] > ''){
char x = min(matrix[i - ][j - ], matrix[i - ][j]);
x = min(x, matrix[i][j - ]);
matrix[i][j] = x + ;
if(matrix[i][j] - '' > maxN) maxN = matrix[i][j] - '';
}
}
}
return maxN * maxN;
}
};

最新文章

  1. 转(Response.WriteFile 无法下载大文件解决方法)
  2. ConCurrent in Practice小记 (1)
  3. 【转载】为什么V8引擎这么快?
  4. 15 Best Responsive HTML5 Frameworks 2014
  5. 【代码笔记】iOS-标题2个图标,点击的时候,页面跳转
  6. ubutu之Navicat安装
  7. 详解SpringMVC请求的时候是如何找到正确的Controller[附带源码分析]
  8. Phalcon 调试应用程序
  9. 【数据结构&amp;amp;&amp;amp;等差数列】KMP简介和算法的实现(c++ &amp;amp;&amp;amp; java)
  10. xdebug.var_display_max_data
  11. UWP--集合绑定数据
  12. new/delete和malloc/free的比较
  13. 字符串匹配的Boyer-Moore(BM)算法
  14. 喵哈哈村的魔法考试 Round #18 (Div.2) 题解
  15. 微信小程序制作家庭记账本之一
  16. FZU Monthly-201901 获奖名单
  17. C语言位操作--不用中间变量交换两数值
  18. [ 原创 ]Centos 7.0下启动 Tomcat8.5.15
  19. font-size对展示的影响
  20. 一句话讲清URI、URL、URN

热门文章

  1. 弹性盒模型display:flex
  2. redis __详解 (转载自作者:孤独烟 出处: http://rjzheng.cnblogs.com/)
  3. 第五章、Django之多表查询进阶与事务
  4. Flask+gevent-websocket模块实现websocket
  5. Linux下的头文件搜索路径
  6. Djnago模板与标签
  7. 共享手机网络给电脑(USB连接)
  8. VS---《在VS2010中 使用C++创建和使用DLL》(003)
  9. string::copy
  10. SQL 查询今天、昨天、7天内、30天的数据