Maximal Square
Total Accepted: 8699 Total Submissions: 44034Given 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 0 1 0 1 1 1 1 1 1 1 1 1 0 0 1 0
Return 4.
提供一个由字符0、1的矩阵,判断由1组成的正方形的最大面积
动态规划
if(matrix[i][j]=='1')
{
count[i][j]=min(count[i-1][j-1],min(count[i-1][j],count[i][j-1]))+1;
if(count[i][j]>max)
max=count[i][j];
}
else
count[i][j]=0;
count[i][j]表示到矩阵第i+1行第j+1列正方形的最大变长
AC代码
class Solution
{
public:
int min(int x,int y)
{
return x<y?x:y;
}
int maximalSquare(vector<vector<char> >& matrix)
{
int rows=matrix.size();
if(rows==0)
return 0;
int max=0;
int colums=matrix[0].size();
int count[rows][colums];
for(int i=0; i<rows; ++i)
{
if(matrix[i][0]=='1')
{
count[i][0]=1;
max=1;
}
else
count[i][0]=0;
}
for(int i=0; i<colums; ++i)
{
if(matrix[0][i]=='1')
{
count[0][i]=1;
max=1;
}
else
count[0][i]=0;
}
for(int i=1; i<rows; ++i)
{
for(int j=1; j<colums; ++j)
{
if(matrix[i][j]=='1')
{
count[i][j]=min(count[i-1][j-1],min(count[i-1][j],count[i][j-1]))+1;
if(count[i][j]>max)
max=count[i][j];
}
else
count[i][j]=0;
}
}
return max*max;
}
};
注意处理形如下面的矩阵
1 1 1 1 1
1 0 0 0 0
1 0 0 0 0
1 0 0 0 0
其他Leetcode题目AC代码:https://github.com/PoughER/leetcode