刷题85. Maximal Rectangle
一、题目说明 题目,85. Maximal Rectangle,计算只包含1的最大矩阵的面积。难度是Hard! 二、我的解答 看到这个题目,我首先想到的是dp,用 dp[i][j] 表示第i行第j列元素向右下角计算的最大面积。后来发现从 dp[i+1][j] 、 dp[i][j+1] 和 dp[i+1][j+1] 计算 dp[i][j] 几乎没有任何规律可循。 然后,我就想用 down_dp[i][j] 和 right_dp[i][j] 两个dp,但遗憾的是还是没成功。 后面看了大神的写法,其实 down_dp[i][j] 然后“向右找同一行”计算即可。代码如下: class Solution{ public: int maximalRectangle(vector<vector<char>>& matrix){ if(matrix.empty()) return 0; int m = matrix.size(); int n = matrix[0].size(); vector<vector<int>> down_dp(m,vector<int>(n,0)); int result = 0; //最后一行 for(int j=n-1;j>=0;j--){ if(matrix[m-1][j]=='0'){ down_dp[m-1][j] = 0; }else if(j==n-1){