221. 最大正方形
在一个由 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(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; } };