85 Maximal Rectangle
https://leetcode.com/problems/maximal-rectangle/
其实想到思路还是挺简单直接的,不要overthink about optimize
class Solution {
public int maximalRectangle(char[][] matrix) {
int m = matrix.length;
int n = matrix[0].length;
int[][] dp = new int[m][n];
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (matrix[i][j] == '1') {
if (j == 0) {
dp[i][j] = 1;
} else {
dp[i][j] = dp[i][j-1] + 1;
}
}
}
}
int ans = 0;
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (matrix[i][j] == '1') {
int minWid = dp[i][j];
for (int k = i; k < m && dp[k][j] != '0'; k++) {
minWid = Math.min(minWid, dp[k][j]);
int hei = k - i + 1;
ans = Math.max(hei*minWid, ans);
}
}
}
}
return ans;
}
}
Last updated