最大正方形—leetcode221
生活随笔
收集整理的這篇文章主要介紹了
最大正方形—leetcode221
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
參考鏈接:https://zhuanlan.zhihu.com/p/92355321?
在一個由 0 和 1 組成的二維矩陣內,找到只包含 1 的最大正方形,并返回其面積。
示例:
輸入: 1 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 0 0 1 0輸出: 4思路: 動態規劃
遞推方程式:dp[i][j] = min(dp[i - 1][j], dp[i][j - 1], dp[i - 1][j - 1]) + 1
class Solution { public:int maximalSquare(vector<vector<char>>& matrix) {if(matrix.empty() || matrix[0].empty())//邊界情況return 0;int m=matrix.size(),n=matrix[0].size();int maxLength=0;int** dp = new int*[m];for(int i=0;i<m;++i){dp[i] = new int[n];memset(dp[i],0,sizeof(int)*n);}for(int i=0;i<m;i++)//第一列{dp[i][0]=matrix[i][0]-'0';maxLength=max(maxLength,dp[i][0]);}for(int j=0;j<n;j++)//第一行{dp[0][j]=matrix[0][j]-'0';maxLength=max(maxLength,dp[0][j]);}for(int i=1;i<m;i++)for(int j=1;j<n;j++){if(matrix[i][j]=='1'){dp[i][j]=min(min(dp[i-1][j],dp[i][j-1]),dp[i-1][j-1]) + 1;maxLength=max(dp[i][j],maxLength);}}return maxLength*maxLength;} };?
總結
以上是生活随笔為你收集整理的最大正方形—leetcode221的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 除自身以外数组的乘积—leetcode2
- 下一篇: 零钱兑换—leetcode322