class Solution {
public:
int maximalRectangle(vector<vector<char> > &matrix) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
int maxArea = 0;
for (int i = 0; i < matrix.size(); i++)
{
vector<char> curLine = matrix[i];
bool metOne = false;
int leftPos = 0;
int rightPos = 0;
for (int j = 0; j <= curLine.size(); j++)
{
if (curLine[j] == '0' || j == curLine.size())
{
if (metOne == true)
{
metOne = false;
rightPos = j-1;
for (int leftEdge = leftPos; leftEdge <= rightPos; leftEdge++)
{
int curLineArea = rightPos-leftEdge+1;
int curArea = curLineArea;
for (int k = i+1; k < matrix.size(); k++)
{
int pos;
for (pos = leftEdge; pos <= rightPos; pos++)
{
if (matrix[k][pos] == '0')
{
break;
}
}
if (pos == rightPos+1)
{
curArea += curLineArea;
}
else
{
break;
}
}
for (int k = i-1; k >= 0; k--)
{
int pos;
for (pos = leftEdge; pos <= rightPos; pos++)
{
if (matrix[k][pos] == '0')
{
break;
}
}
if (pos == rightPos+1)
{
curArea += curLineArea;
}
else
{
break;
}
}
if (curArea > maxArea)
{
maxArea = curArea;
}
}
}
else
{
continue;
}
}
else if (curLine[j] == '1')
{
if (metOne == false)
{
metOne = true;
leftPos = j;
}
}
}
}
return maxArea;
}
};
尽管这个算法通过了测试,但是感觉性能不是很好