public class MaximalRectangle
{
public MaximalRectangle(){}
public int maximalRectangle(char[][] matrix)
{
if(matrix.length == 0 || matrix[0].length == 0)
{return 0;}
int maxarea= 0;
int[][] temp= new int[matrix.length][matrix[0].length];
for(int i=0;i<matrix.length;i++)
{
for(int j=0;j<matrix[0].length;j++)
{
if(i==0)
{temp[i][j]= matrix[i][j] - 48;}
else
{
temp[i][j]= (matrix[i][j] == '0') ? 0 : (temp[i-1][j] + 1);
}
int min= temp[i][j];
for(int k=j;k>=0;k--)
{
if(min == 0) {break;}
if(min > temp[i][k])
{min= temp[i][k];}
maxarea= Math.max(maxarea, min * (j - k + 1));
}
}
}
return maxarea;
}
}