最大正方形

https://leetcode-cn.com/problems/maximal-square/solution/zui-da-zheng-fang-xing-by-leetcode-solution/
image.png
image.png
image.png

  1. class Solution {
  2. public int maximalSquare(char[][] matrix) {
  3. int maxSide = 0;
  4. if (matrix == null || matrix.length == 0 || matrix[0].length == 0) {
  5. return maxSide;
  6. }
  7. int rows = matrix.length, columns = matrix[0].length;
  8. int[][] dp = new int[rows][columns];
  9. for (int i = 0; i < rows; i++) {
  10. for (int j = 0; j < columns; j++) {
  11. if (matrix[i][j] == '1') {
  12. if (i == 0 || j == 0) {
  13. dp[i][j] = 1;
  14. } else {
  15. dp[i][j] = Math.min(Math.min(dp[i - 1][j], dp[i][j - 1]), dp[i - 1][j - 1]) + 1;
  16. }
  17. maxSide = Math.max(maxSide, dp[i][j]);
  18. }
  19. }
  20. }
  21. int maxSquare = maxSide * maxSide;
  22. return maxSquare;
  23. }
  24. }

image.png