[LeetCode 中等 動態規劃 ]221. 最大正方形

barbaraaa:D發表於2020-09-30

題目描述

在一個由 0 和 1 組成的二維矩陣內,找到只包含 1 的最大正方形,並返回其面積。

示例:

輸入:

1 0 1 0 0
1 0 1 1 1
1 1 1 1 1
1 0 0 1 0

輸出: 4

動態規劃

class Solution {
    public int maximalSquare(char[][] matrix) {
        int n=matrix.length;
        if(n<1) return 0;
        int m=matrix[0].length;
        if(m<1) return 0;
        // 在new動態規劃表格的時候多加一行一列 就不需要考慮out index
        int[][] dp=new int[n+1][m+1];

        int maxside=0;
        for(int i=1;i<n+1;i++){
            for(int j=1;j<m+1;j++){
                if(matrix[i-1][j-1]=='1'){
                    dp[i][j] = Math.min(Math.min(dp[i - 1][j], dp[i][j - 1]), dp[i - 1][j - 1]) + 1;
                    maxside=Math.max(dp[i][j],maxside);
                }
            }
        }
        return maxside*maxside;
    }
}

相關文章