Skip to content

Commit e155687

Browse files
authored
Update 1139-largest-1-bordered-square.js
1 parent 20e6904 commit e155687

File tree

1 file changed

+20
-18
lines changed

1 file changed

+20
-18
lines changed

1139-largest-1-bordered-square.js

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,28 +3,30 @@
33
* @return {number}
44
*/
55
const largest1BorderedSquare = function(grid) {
6-
let A = grid
6+
let A = grid;
77
let m = A.length,
8-
n = A[0].length
9-
const left = Array.from(Array(m)).map(() => Array(n).fill(0))
10-
const top = Array.from(Array(m)).map(() => Array(n).fill(0))
8+
n = A[0].length;
9+
let max = 0;
10+
const hori = Array.from(Array(m)).map(() => Array(n).fill(0));
11+
const ver = Array.from(Array(m)).map(() => Array(n).fill(0));
1112
for (let i = 0; i < m; ++i) {
1213
for (let j = 0; j < n; ++j) {
1314
if (A[i][j] > 0) {
14-
left[i][j] = j > 0 ? left[i][j - 1] + 1 : 1
15-
top[i][j] = i > 0 ? top[i - 1][j] + 1 : 1
15+
hori[i][j] = j > 0 ? hori[i][j - 1] + 1 : 1;
16+
ver[i][j] = i > 0 ? ver[i - 1][j] + 1 : 1;
1617
}
1718
}
1819
}
19-
for (let l = Math.min(m, n); l > 0; --l)
20-
for (let i = 0; i < m - l + 1; ++i)
21-
for (let j = 0; j < n - l + 1; ++j)
22-
if (
23-
top[i + l - 1][j] >= l &&
24-
top[i + l - 1][j + l - 1] >= l &&
25-
left[i][j + l - 1] >= l &&
26-
left[i + l - 1][j + l - 1] >= l
27-
)
28-
return l * l
29-
return 0
30-
}
20+
for (let i = m - 1; i >= 0; i--) {
21+
for (let j = n - 1; j >= 0; j--) {
22+
let small = Math.min(hori[i][j], ver[i][j]);
23+
while (small > max) {
24+
if (ver[i][j - small + 1] >= small && hori[i - small + 1][j] >= small)
25+
max = small;
26+
small--;
27+
}
28+
}
29+
}
30+
return max * max;
31+
};
32+

0 commit comments

Comments
 (0)