package prob221.maximal.square;

import static java.lang.Math.*;

public class Solution {
    public int maximalSquare(char[][] matrix) {

        int m = matrix.length;
        if(m == 0) return 0;
        int n = matrix[0].length;

        int[][] ms = new int[m][n];

        for(int c = 0; c < n; c ++)
            ms[0][c] = matrix[0][c] - '0';

        for(int r = 0; r < m; r ++)
            ms[r][0] = matrix[r][0] - '0';

        int max = 0;
        for(int r = 1; r < m; r ++)
            for(int c = 1; c < n; c ++){
                if(matrix[r][c] == '1'){
                    ms[r][c] = min(min(ms[r - 1][c], ms[r][c - 1]), ms[r - 1][c - 1]) + 1;
                    max = max(max, ms[r][c]);
                }
            }

        return max * max;
    }
}
@@ -264,16 +264,55 @@
 m%5D%5Bn%5D;%0A%0A
+        int max = matrix%5B0%5D%5B0%5D - '0';%0A%0A
         
@@ -334,24 +334,25 @@
 c %3C n; c ++)
+%7B
 %0A           
@@ -374,32 +374,80 @@
 rix%5B0%5D%5Bc%5D - '0';
+%0A            max = max(max, ms%5B0%5D%5Bc%5D);%0A        %7D
 %0A%0A        for(in
@@ -459,32 +459,33 @@
  0; r %3C m; r ++)
+%7B
 %0A            ms%5B
@@ -512,25 +512,24 @@
  - '0';%0A
-%0A
         
 int max 
@@ -524,20 +524,48 @@
     
-int
+   
  max = 
-0;
+max(max, ms%5Br%5D%5B0%5D);%0A        %7D%0A
 %0A   

fix prob221