Given a rows x cols binary matrix filled with 0’s and 1’s, find the largest rectangle containing only 1’s and return its area.
Example 1:
1 2 3
Input: matrix = [["1","0","1","0","0"],["1","0","1","1","1"],["1","1","1","1","1"],["1","0","0","1","0"]] Output: 6 Explanation: The maximal rectangle is shown in the above picture.
```JavaScript /** * @param {character[][]} matrix * @return {number} */ var maximalRectangle = function(matrix) { if (matrix.length == 0 || matrix[0].length == 0) return 0; var m = matrix.length; var n = matrix[0].length; var result = 0; var record = new Array(m).fill(0).map(x => new Array(n).fill(0)); for (var i = 0; i < m; i++) { for (var j = 0; j < n; j++) { if (matrix[i][j] == '0') continue; if (j > 0) { record[i][j] = record[i][j - 1] + 1; } else { record[i][0] = 1; } } } for (var i = 0; i < m; i++) { for (var j = 0; j < n; j++) { if (record[i][j] == '0') continue; var tmp = record[i][j]; result = Math.max(tmp, result); for (var k = i - 1; k >= 0 && record[k][j] != 0; --k) { tmp = Math.min(tmp, record[k][j]); result = Math.max(result, tmp * (i - k + 1)); } } } return result; };