Skip to content
This repository was archived by the owner on Sep 20, 2023. It is now read-only.

Commit e40b51b

Browse files
musicqaQuaYi
authored andcommitted
opt 0221 solution
1 parent f33c3a4 commit e40b51b

File tree

1 file changed

+6
-23
lines changed

1 file changed

+6
-23
lines changed

Algorithms/0221.maximal-square/maximal-square.go

Lines changed: 6 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -13,32 +13,15 @@ func maximalSquare(matrix [][]byte) int {
1313
maxEdge := 0
1414
// dp[i][j] == 以 (i,j) 点为右下角点的符合题意的最大正方形的边长
1515
// TODO: 由于 dp[i][j] 只与上,左上,左的数据有关,可以把 dp 压缩成一维的
16-
dp := make([][]int, m)
16+
dp := make([][]int, m+1)
1717
for i := range dp {
18-
dp[i] = make([]int, n)
19-
if matrix[i][0] == '1' {
20-
dp[i][0] = 1
21-
maxEdge = 1
22-
}
23-
}
24-
for j := 1; j < n; j++ {
25-
if matrix[0][j] == '1' {
26-
dp[0][j] = 1
27-
maxEdge = 1
28-
}
18+
dp[i] = make([]int, n+1)
2919
}
3020

31-
for i := 1; i < m; i++ {
32-
for j := 1; j < n; j++ {
33-
if matrix[i][j] == '1' {
34-
dp[i][j] = 1 +
35-
min(
36-
dp[i-1][j-1],
37-
min(
38-
dp[i-1][j],
39-
dp[i][j-1],
40-
),
41-
)
21+
for i := 1; i <= m; i++ {
22+
for j := 1; j <= n; j++ {
23+
if matrix[i-1][j-1] == '1' {
24+
dp[i][j] = 1 + min(dp[i-1][j-1], min(dp[i-1][j], dp[i][j-1]))
4225
maxEdge = max(maxEdge, dp[i][j])
4326
}
4427
}

0 commit comments

Comments
 (0)