leetcodeSolution to some Leetcode problems written in C++ |
git clone git://git.dimitrijedobrota.com/leetcode.git |
Log | Files | Refs | README | LICENSE |
0085.cpp (766B)
0 class Solution {
1 public:
2 int maximalRectangle(const vector<vector<char>> &matrix) const {
3 const int n = size(matrix), m = size(matrix[0]);
4 static int dp[202][202] = {0};
5 int res = 0;
7 for (int i = n - 1; i >= 0; i--) {
8 dp[i][m] = 0;
9 for (int j = m - 1, acc = 0; j >= 0; j--) {
10 dp[i][j] = matrix[i][j] == '1' ? dp[i][j + 1] + 1 : 0;
11 }
12 }
14 for (int i = 0; i < n; i++) {
15 for (int j = 0; j < m; j++) {
16 for (int l = i, len = m; l < n && matrix[l][j] == '1'; l++) {
17 len = min(len, dp[l][j]);
18 res = max(res, (l - i + 1) * len);
19 }
20 }
21 }
23 return res;
24 }
25 };