最大正方形
最大正方形
在一个由 '0'
和 '1'
组成的二维矩阵内,找到只包含 '1'
的最大正方形,并返回其面积。
class Solution { public: int maximalSquare(vector<vector<char>>& matrix) { int r = matrix.size(); int c = matrix[0].size(); int minl = min(r,c);//求出最大的正方形边长 int dp[305][305]; for(int i=0;i<r;i++) { for(int j=0;j<c;j++) { if(matrix[i][j] == '1') dp[i][j] = 1; else dp[i][j] = 0; } } for(int k = 1; k < minl ; k++) for(int i=k;i<r;i++) { for(int j=k;j<c;j++) { if(dp[i][j] == 0) continue ; int res = 305; res = min(dp[i][j-1] , dp[i-1][j]); res = min(res , dp[i-1][j-1]); dp[i][j] = res + 1; } } int ans=-1; for(int i=0;i<r;i++) { for(int j=0;j<c;j++) ans = max(ans , dp[i][j]); } return ans*ans; } };