1139. Largest 1-Bordered Square

Description

Given a 2D grid of 0s and 1s, return the number of elements in the largest square subgrid that has all 1s on its border , or 0 if such a subgrid doesn't exist in the grid.

Example 1:

Input: grid = [[1,1,1],[1,0,1],[1,1,1]]
Output: 9

Example 2:

Input: grid = [[1,1,0,0]]
Output: 1

Constraints:

  • 1 <= grid.length <= 100

  • 1 <= grid[0].length <= 100

  • grid[i][j] is 0 or 1

Tags

Dynamic Programming

Solution

For each square, know how many ones are up, left, down, and right of this square. We can use prefix-sum along 2 axes to pre-process for quicker look-up. Now for each square, we can evaluate whether that square is 1-bordered, by checking if the edge length is equal to the sum of the edge elements with prefix-sum in O(1).

Complexity

  • Time complexity: O(n3)O(n^3)

  • Space complexity: O(n2)O(n^2)

Code

Reference

Last updated

Was this helpful?