Skip to content

Commit a9688d4

Browse files
committed
修改文件: DynamicProgram/221-maximal-square.md
1 parent 98ae854 commit a9688d4

1 file changed

Lines changed: 35 additions & 0 deletions

File tree

DynamicProgram/221-maximal-square.md

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,3 +79,38 @@ grammar_cjkRuby: true
7979
return maxSize*maxSize;
8080
}
8181
```
82+
83+
## solution3 动态规划+单维数组
84+
85+
```cpp
86+
int maximalSquare(vector<vector<char>>& matrix) {
87+
//对每一个点记忆从它出发的max值,如果不符合就算了,符合的话;
88+
if (matrix.empty() || matrix[0].size() == 0)
89+
return 0;
90+
int m = matrix.size(), n = matrix[0].size();
91+
int maxSize = 0;
92+
vector<int> result(n, 0);
93+
for (int i = 0; i < n; i++)
94+
if (matrix[0][i] == '1')
95+
{
96+
result[i] = 1;maxSize = 1;
97+
}
98+
for (int i = 1; i < m; i++)
99+
{
100+
int pre = result[0];
101+
result[0] = matrix[i][0] == '1'?1:0;
102+
maxSize = max(result[0], maxSize);
103+
for (int j = 1; j < n; j++)
104+
{
105+
int temp = result[j];
106+
if (matrix[i][j] == '1')
107+
result[j] = min(min(pre, result[j]),result[j-1])+1;
108+
else
109+
result[j] = 0;
110+
maxSize = max(maxSize, result[j]);
111+
pre = temp;
112+
}
113+
}
114+
return maxSize*maxSize;
115+
}
116+
```

0 commit comments

Comments
 (0)