File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff 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+ ```
You can’t perform that action at this time.
0 commit comments