Skip to content

Commit b816d43

Browse files
add 221
1 parent c78d084 commit b816d43

File tree

5 files changed

+91
-1
lines changed

5 files changed

+91
-1
lines changed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@ LeetCode
194194
|0216|[Combination Sum III](https://leetcode.com/problems/combination-sum-iii/) | c | [c++](./src/0216-Combination-Sum-III/0216.cpp) |[python](./src/0216-Combination-Sum-III/0216.py)|||Medium|
195195
|0217|[Contains Duplicate](https://leetcode.com/problems/contains-duplicate/) | c | [c++](./src/0217-Contains-Duplicate/0217.cpp) |[python](./src/0217-Contains-Duplicate/0217.py)|||Easy|
196196
|0219|[Contains Duplicate II](https://leetcode.com/problems/contains-duplicate-ii/) | c | [c++](./src/0219-Contains-Duplicate-II/0219.cpp) |[python](./src/0219-Contains-Duplicate-II/0219.py)|||Easy|
197-
|0221|[Maximal Square](https://leetcode.com/problems/maximal-square/) | c | [c++](./src/0221-Maximal-Square/0221.cpp) |[python](./src/0221-Maximal-Square/0221.py)|||Medium|
197+
|0221|[Maximal Square](https://leetcode.com/problems/maximal-square/) | c | [c++](./src/0221-Maximal-Square/0221.cpp) |[python](./src/0221-Maximal-Square/0221.py)|[go](./src/0221-Maximal-Square/0221.go)|[js](./src/0221-Maximal-Square/0221.js)|Medium|
198198
|0222|[Count Complete Tree Nodes](https://leetcode.com/problems/count-complete-tree-nodes/) | c | [c++](./src/0222-Count-Complete-Tree-Nodes/0222.cpp) |[python](./src/0222-Count-Complete-Tree-Nodes/0222.py)|||Medium|
199199
|0223|[Rectangle Area](https://leetcode.com/problems/rectangle-area/) | c | [c++](./src/0223-Rectangle-Area/0223.cpp) |[python](./src/0223-Rectangle-Area/0223.py)|||Medium|
200200
|0226|[Invert Binary Tree](https://leetcode.com/problems/invert-binary-tree/) | c | [c++](./src/0226-Invert-Binary-Tree/0226.cpp) |[python](./src/0226-Invert-Binary-Tree/0226.py)|||Easy|

src/0221-Maximal-Square/0221.cpp

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
class Solution
2+
{
3+
public:
4+
int maximalSquare(vector<vector<char>>& matrix)
5+
{
6+
if (matrix.empty()) return 0;
7+
int res = 0, r = matrix.size(), c = matrix[0].size();
8+
int mem[r][c] = {};
9+
for (int i = 0; i < r; ++i)
10+
{
11+
for (int j = 0; j < c; ++j)
12+
{
13+
if (!i or !j or matrix[i][j] == '0') mem[i][j] = matrix[i][j] - '0';
14+
else mem[i][j] = min({mem[i-1][j], mem[i][j-1], mem[i-1][j-1]}) + 1;
15+
res = max(res, mem[i][j]);
16+
}
17+
}
18+
return res * res;
19+
}
20+
};

src/0221-Maximal-Square/0221.go

+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
func maximalSquare(matrix [][]byte) int {
2+
if len(matrix) == 0 {
3+
return 0
4+
}
5+
res, r, c := 0, len(matrix), len(matrix[0])
6+
mem := make([][]int, r)
7+
for i := 0; i < r; i++ {
8+
mem[i] = make([]int, c)
9+
}
10+
for i := 0; i < r; i++ {
11+
for j := 0; j < c; j++ {
12+
if i == 0 || j == 0 || matrix[i][j] == '0' {
13+
mem[i][j] = int(matrix[i][j]) - int('0')
14+
} else {
15+
mem[i][j] = min(mem[i][j-1], min(mem[i-1][j], mem[i-1][j-1])) + 1
16+
}
17+
res = max(res, mem[i][j])
18+
}
19+
}
20+
return res * res
21+
}
22+
23+
func min(a, b int) int {
24+
if a < b {
25+
return a
26+
}
27+
return b
28+
}
29+
30+
func max(a, b int) int {
31+
if a > b {
32+
return a
33+
}
34+
return b
35+
}

src/0221-Maximal-Square/0221.js

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
var maximalSquare = function(matrix) {
2+
if (!matrix.length) return 0;
3+
let res = 0, r = matrix.length, c = matrix[0].length;
4+
let mem = new Array(r);
5+
for (let i = 0; i < r; ++i) {
6+
mem[i] = new Array(c);
7+
mem[i].fill(0);
8+
}
9+
for (let i = 0; i < r; ++i)
10+
{
11+
for (let j = 0; j < c; ++j)
12+
{
13+
if (!i || !j || matrix[i][j] == '0') mem[i][j] = Number(matrix[i][j]);
14+
else mem[i][j] = Math.min(Math.min(mem[i-1][j], mem[i][j-1]), mem[i-1][j-1]) + 1;
15+
res = Math.max(res, mem[i][j]);
16+
}
17+
}
18+
return res * res;
19+
};

src/0221-Maximal-Square/0221.py

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
class Solution:
2+
def maximalSquare(self, matrix: List[List[str]]) -> int:
3+
if not matrix:
4+
return 0
5+
6+
res, r, c = 0, len(matrix), len(matrix[0])
7+
mem = [[0]*c for _ in range(r)]
8+
9+
for i in range(r):
10+
for j in range(c):
11+
if not i or not j or matrix[i][j] == '0':
12+
mem[i][j] = int(matrix[i][j])
13+
else:
14+
mem[i][j] = min(mem[i-1][j], mem[i-1][j-1], mem[i][j-1]) + 1
15+
res = max(res, mem[i][j])
16+
return res**2

0 commit comments

Comments
 (0)