AlgoLounge

Maximal Rectangle

hard

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.

Examples

Example 1

Input:  matrix = [["1","0","1","0","0"],["1","0","1","1","1"],["1","1","1","1","1"],["1","0","0","1","0"]]

┌───┬───┬───┬───┬───┐ │ 1 │ 0 │ 1 │ 0 │ 0 │ ├───┼───╔═══╦═══╦═══╗ │ 1 │ 0 ║ 1 ║ 1 ║ 1 ║ ├───┼───╠═══╬═══╬═══╣ │ 1 │ 1 ║ 1 ║ 1 ║ 1 ║ ├───┼───╚═══╩═══╩═══╝ │ 1 │ 0 │ 0 │ 1 │ 0 │ └───┴───┴───┴───┴───┘Output: 6 (double-line border = maximal rectangle, 3 × 2)

Example 2

Input:  matrix = [["0"]]
Output: 0

Example 3

Input:  matrix = [["1"]]
Output: 1

Constraints

  • rows == matrix.length
  • cols == matrix[i].length
  • 1 <= rows, cols <= 200
  • matrix[i][j] is '0' or '1'
TypeScript
Loading editor…
List of test cases (10)
Case 1
matrix = [["1","0","1","0","0"],["1","0","1","1","1"],["1","1","1","1","1"],["1","0","0","1","0"]]
Case 2
matrix = [["0"]]
Case 3
matrix = [["1"]]
Case 4
matrix = [["1","1","1","1"]]
Case 5
matrix = [["1"],["1"],["1"]]
Case 6
matrix = [["0","0","0"],["0","0","0"]]
Case 7
matrix = [["1","1"],["1","1"],["1","1"]]
Case 8
matrix = [["1","0","1"],["0","1","0"],["1","0","1"]]
Case 9
matrix = [["0","0","0","0","0","0","1"],["0","0","0","0","1","1","1"],["1","1","1","1","1","1","1"],["0","0","0","1","1","1","1"]]
Case 10
matrix = [["0","0","1"],["1","1","1"]]