[LeetCode]Maximal Square
来源:互联网 发布:js escape html 编辑:程序博客网 时间:2024/05/29 17:08
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:
1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0
Return 4.
We need to construct a matrix Dp[m*n]. f(m,n) equals the situation when the square's right-down top point is(m,n) ,the square's large. So the Dynamic Equation is :
f(m.n) = matrix[m][n] ( m=0 or n=0 );
when matrix(m,n) = 1:f(m,n) = min(f(m-1,n),f(n-1,m),f(n-1,m-1))+1;
when matrix(m,n)= 0; f(m,n) = 0;
and search all the point,find the max square. It's the max square.(you can search it just when you construct f(m,n) matrix.)
class Solution {public: int maximalSquare(vector<vector<char>>& matrix) { if(matrix.size()==0) return 0; vector<vector<int>> dp(matrix.size(),vector<int>(matrix[0].size())); int res = dp[0][0]; for(int i=0;i<matrix.size();++i){ dp[i][0] = matrix[i][0]-'0'; if(dp[i][0]>res) res = dp[i][0]; } for(int j=0;j<matrix[0].size();++j){ dp[0][j] = matrix[0][j]-'0'; if(dp[0][j]>res) res = dp[0][j]; } for(int i=1;i<matrix.size();++i){ for(int j=1;j<matrix[0].size();++j){ if(matrix[i][j]=='0') dp[i][j] = 0; if(matrix[i][j]=='1') { dp[i][j] = min(dp[i-1][j],dp[i][j-1],dp[i-1][j-1])+1; if(dp[i][j]>res) res = dp[i][j]; } } } return res*res; } int min(int a,int b,int c){ if(a<=b&&a<=c) return a; if(b<=a&&b<=c) return b; if(c<=a&&c<=b) return c; }};
0 0
- 【LeetCode】Maximal Rectangle && Maximal Square
- Leetcode:Maximal Square & Maximal Rectangle
- [leetcode] Maximal Square
- Maximal Square Leetcode Java
- [leetcode] Maximal Square
- leetcode 221: Maximal Square
- LeetCode Maximal Square
- Maximal Square - LeetCode 221
- #leetcode#Maximal Square
- LeetCode Maximal Square
- [LeetCode] Maximal Square
- [LeetCode]Maximal Square
- leetcode Maximal Square
- leetcode Maximal Square
- Leetcode 221 Maximal Square
- leetCode(27):Maximal Square
- [leetCode] Maximal Square
- Leetcode 221 Maximal Square
- 某大学程序设计竞赛
- 2014.4新版uboot启动流程分析
- leetcode--Contains Duplicate
- 《数据结构学习与实验指导》3-7求前缀表达式的值/3-8堆栈模拟队列
- 如何学习Linux
- [LeetCode]Maximal Square
- Kerberos认证实验
- 闭包——藏在代码中的“房间”,用于和外界沟通的桥梁
- hdu 1465 不容易系列之一(错位排序)
- 【Struts2】文件的上传与上传权限的控制
- Win8 解决错误 1406。安装程序无法将值OSE.exe写入注册表项。无法保存对main权限所作的更改
- 【ActionScript】ActionScript2.0的Helloworld
- 勾股定理
- 文件与目录的默认权限与隐藏权限