题目描述:

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

思路分析:

一道动态规划的题。由于是正方形,首先单一的‘1’即为最小的正方形,接下来需要考察其外围区域是否为1。具体来说,dp[i][j]表示包含该点的最大正方形的边长。同时不断去更新这个最大边长。这里的递推是从前向后,如dp[i][j]=1,那么需要看dp[i-1][j],dp[i][j-1]以及dp[i-1][j-1]三个部分,动态递推公式为dp[i][j] = min(dp[i-1][j], dp[i][j-1], dp[i-1][j-1])+1,更新最大边长。需要注意两个边界,即第一行和第一列,直接判断01,赋值即可。

代码:

 class Solution {
public:
int maximalSquare(vector<vector<char>>& matrix) {
int row = matrix.size();
if(row == )
return ;
int col = matrix[].size();
vector<vector<int>> res(row, vector<int>(col, ));
int maxval = ;
for(int i=; i<row; i++)
{
res[i][] = matrix[i][]-'';
maxval = max(maxval, res[i][]);
}
for(int i=; i<col; i++)
{
res[][i] = matrix[][i]-'';
maxval = max(maxval, res[][i]);
}
for(int i=; i<row; i++)
{
for(int j=; j<col; j++)
{
if(matrix[i][j] == '')
res[i][j] = ;
else
{
res[i][j] = min(res[i-][j-], min(res[i-][j], res[i][j-]))+;
maxval = max(maxval, res[i][j]);
}
}
}
return maxval*maxval;
}
};

最新文章

  1. Mac下搭建git
  2. mysql 查询数据时按照A-Z顺序排序返回结果集
  3. HTTP1.0与HTTP1.1的区别
  4. HDU #5507 GT and Strings
  5. select2的基本用法
  6. [XML] ResourceManager一个操作Resource的帮助类 (转载)
  7. linux内核学习-建议路线
  8. Eclipse 将Java项目转为Dynamic web project
  9. Power(int base, int exponent) 函数实现
  10. 你好,C++(1)C++是什么?C++的“前世今生”
  11. Android ProgressBar实现加载进度条
  12. jquery 获取当前对象的id取巧验证的一种方法
  13. c++对象在lua层的生命周期与内容扩展
  14. JUnit单元测试遇到的问题及解决思路
  15. 爬虫scrapy的使用
  16. 每日英语:China Destroys Six Tons of Confiscated Ivory
  17. 【WEB前端系列之CSS】CSS3动画之Tranition
  18. Java中高级面试题整理
  19. MySQL数据库(二)
  20. hadoop01

热门文章

  1. javascript:void(0)的含义
  2. Vue Nginx反向代理配置 解决生产环境跨域
  3. Eclipse apk项目创建和项目构架
  4. Appium的测试简单流程
  5. AI的自学题库-竞赛-基础知识
  6. 【解决】修改 docker 容器时间与宿主机不同
  7. gitlab安装配置
  8. Show which git tag you are on?
  9. Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column &#39;org_mer_id&#39; in where clause is ambiguous
  10. CodeForces - 1037H: Security(SAM+线段树合并)