Largest 1-Bordered Square LeetCode solution in JavaScript

1
var largest1BorderedSquare = function (grid) {
2
let m = grid.length,
3
n = grid[0].length;
4
let top = Array(m)
5
.fill(0)
6
.map(() => Array(n).fill(0));
7
let left = Array(m)
8
.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;
15
}
16
}
17
}
18

19
let ans = 0;
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);
28
break;
29
}
30
}
31
}
32
}
33
return ans;
34
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0