leecode_221 Maximal Square
2016-06-06 11:05
295 查看
Given a 2D binary matrix filled with 0's and 1's, find the largest square containing all 1's and return its area.
For example, given the following matrix:
Return 4.
使用dp解决:
构造一个新的矩阵dp,dp[i][j]表示以点(i, j)为右下角的正方形的边长;状态转移方程:
dp[i][j] = min(dp[i-1][j-1], min(dp[i-1][j], dp[i][j-1])) + 1;
For example, given the following matrix:
1 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 0 0 1 0
Return 4.
使用dp解决:
构造一个新的矩阵dp,dp[i][j]表示以点(i, j)为右下角的正方形的边长;状态转移方程:
dp[i][j] = min(dp[i-1][j-1], min(dp[i-1][j], dp[i][j-1])) + 1;
class Solution { public: int maximalSquare(vector<vector<char>>& matrix) { const int m=matrix.size(); if (m==0) return 0; const int n=matrix[0].size(); if (n==0) return 0; int dp[m] ; int res=0; for (int i=0;i<m;i++){ for (int j=0;j<n;j++){ if (matrix[i][j]=='1'){ dp[i][j]=1; res=1; } else dp[i][j]=0; } } for (int i=1;i<m;i++){ for (int j=1;j<n;j++){ if (dp[i][j]==1){ dp[i][j]=min(dp[i-1][j-1], min(dp[i][j-1], dp[i-1][j]) )+1; res=max(res,dp[i][j]); } } } return res*res; } };
相关文章推荐
- Duilib编辑器DuiDesigner
- hdu 1492The number of divisors(约数) about Humble Numbers(因子个数)
- ORA-12518: TNS: 监听程序无法分发客户机连接
- Adobe FLASH CS6 安装错误解决方法
- word转换html
- JDK1.7中引用sun.management.ManagementFactory
- 省市联动效果的简单实现代码(推荐)
- PHP redis本地测试
- CoreJava学习笔记1-基本概念、对象和类
- [hihoCoder] 区域周长 解题报告
- iOS Xcode编辑器 光标消失问题
- 通过刚体组件控制物体的运动
- Unity_二维纹理 Texture 2D_3_按平台覆盖
- Gson解析json繁杂数据
- 冲刺第二阶段工作总结10
- paper 75:使用MATLAB的神经网络工具箱创建神经网络
- quartz定时器在springmvc中的用法
- 判断单链表是否有环
- Android电话拨打流程源码分析
- 恢复root用户目录,及~目录