Skip to content

Commit a2a2a23

Browse files
kav1239ignacio-chiazzo
authored andcommitted
added Maximal_square.js file
1 parent c9f1a87 commit a2a2a23

File tree

1 file changed

+53
-0
lines changed

1 file changed

+53
-0
lines changed

Maximal_square.js

+53
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
/*
2+
Maximal Area of Square
3+
4+
Given an m x n binary matrix filled with 0's and 1's, find the largest square containing only 1's and return its area.
5+
6+
Example 1 Input: matrix = [["1","0","1","0","0"],["1","0","1","1","1"],["1","1","1","1","1"],["1","0","0","1","0"]]
7+
Output: 4
8+
9+
10+
Example 2 Input: matrix = [["0","1"],["1","0"]]
11+
Output: 1
12+
13+
14+
Example 3 Input: matrix = [["0"]]
15+
Output: 0
16+
17+
18+
*/
19+
20+
/**
21+
* @param {character[][]} matrix
22+
* @return {number}
23+
*/
24+
var maximalSquare = function(matrix) {
25+
var m = matrix.length;
26+
var n = (matrix[0] || []).length;
27+
var dp = Array(m).fill(0).map(_ => Array(n));
28+
var max = 0;
29+
30+
for (var k = 0; k < m; k++) {
31+
dp[k][0] = matrix[k][0] === '1' ? 1 : 0;
32+
max = Math.max(max, dp[k][0]);
33+
}
34+
35+
for (var p = 0; p < n; p++) {
36+
dp[0][p] = matrix[0][p] === '1' ? 1 : 0;
37+
max = Math.max(max, dp[0][p]);
38+
}
39+
40+
for (var i = 1; i < m; i++) {
41+
for (var j = 1; j < n; j++) {
42+
if (matrix[i][j] === '1') {
43+
dp[i][j] = Math.min(dp[i - 1][j - 1], dp[i - 1][j], dp[i][j - 1]) + 1;
44+
max = Math.max(max, dp[i][j]);
45+
} else {
46+
dp[i][j] = 0;
47+
}
48+
}
49+
}
50+
51+
return max * max;
52+
53+
};

0 commit comments

Comments
 (0)