本文主要是介绍Leetcode 221. 最大正方形,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述
在一个由 ‘0’ 和 ‘1’ 组成的二维矩阵内,找到只包含 ‘1’ 的最大正方形,并返回其面积。
C++
class Solution {
public:/*动态规划:dp[i][j]表示第i行第j列所能构成的最大正方形的边长dp[i][j]=1+min{dp[i-1][j-1],dp[i][j-1],dp[i-1][j]}*/int maximalSquare(vector<vector<char>>& matrix) {int m=matrix.size();int n=matrix[0].size();if(!m) return 0;vector<vector<int>> dp(m+1,vector<int>(n+1));int res=0;//填表for(int i=1;i<=m;i++){for(int j=1;j<=n;j++){if(matrix[i-1][j-1]=='1'){dp[i][j]=1+min(dp[i-1][j-1],min(dp[i-1][j],dp[i][j-1]));res=max(res,dp[i][j]);}}}return res*res;}
};
这篇关于Leetcode 221. 最大正方形的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!