一、题目内容

image.png

二、题解

解法1:

思路

dp求最小边长

代码

  1. public class Solution {
  2. public int solve (char[][] matrix) {
  3. // write code here
  4. if(matrix == null||matrix.length==0){
  5. return 0;
  6. }
  7. int row = matrix.length;
  8. int column = matrix[0].length;
  9. int[][] dp = new int[row+1][column+1];
  10. int maxans = 0;
  11. for(int i = 1;i<=row;i++){
  12. for(int j = 1;j<=column;j++){
  13. if(matrix[i-1][j-1] == '1'){
  14. dp[i][j] = Math.min(dp[i-1][j-1],Math.min(dp[i-1][j],dp[i][j-1]))+1;
  15. maxans = Math.max(maxans,dp[i][j]);
  16. }
  17. }
  18. }
  19. return maxans*maxans;
  20. }
  21. }