221. 最大正方形

221. 最大正方形

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

示例:spa

輸入: 

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(vector<vector<char>>& matrix) {
        int m=matrix.size();
        if(m==0)return 0;
        int n=matrix[0].size();
        vector<int> dp(n,0);
        
        int maxEdge=0;
        dp[0]=matrix[0][0]-'0';
        for(int i=0;i<m;i++){
            int k=dp[0];
            dp[0]=matrix[i][0]-'0';
            maxEdge=max(maxEdge,dp[0]);
            for(int j=1;j<n;j++){
                int tmp=dp[j];
                dp[j] = matrix[i][j]!='0' ? min(dp[j-1],min(dp[j],k))+1:0;
                maxEdge=max(maxEdge,dp[j]);
                k=tmp;
            }
        }
        
        return maxEdge*maxEdge;
    }
};
相關文章
相關標籤/搜索