1
var largest1BorderedSquare = function (grid) {6
.map(() => Array(n).fill(0));9
.map(() => Array(n).fill(0));10
for (let i = 0; i < m; i++) {11
for (let j = 0; j < n; j++) {12
if (grid[i][j] === 1) {13
left[i][j] = j > 0 ? left[i][j - 1] + 1 : 1;14
top[i][j] = i > 0 ? top[i - 1][j] + 1 : 1;20
for (let i = 0; i < m; i++) {21
for (let j = 0; j < n; j++) {22
let size = Math.min(top[i][j], left[i][j]);23
for (let k = size; k > 0; k--) {24
let bottomLeftTop = top[i][j - k + 1];25
let topRightLeft = left[i - k + 1][j];26
if (bottomLeftTop >= k && topRightLeft >= k) {27
ans = Math.max(ans, k * k);