在乙個由 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[m][n]
,其中dp[i][j]
表示以座標(i,j)
為右下角元素的最大正方形的邊長。
通過觀察我們可以看出當前位置的最大正方形邊長為上,左,左上三個位置最大正方形邊長的最小值+1。(必須這三個正方形同時滿足&&該位置matrix[i][j]==1
的條件下,最大邊長)
得到動態規劃方程: 如果matrix[i][j] == 1
dp[i][j] = min(dp[i-1][j], dp[i][j-1], dp[i-1][j-1]) + 1
否則
dp[i][j] = 0
並用乙個變數maxlen
記錄下遍歷過程中的最大正方形邊長,最終返回maxlen*maxlen
為最大正方形面積。
複雜度分析時間複雜度:o(mn) 空間複雜度:o(mn) m,n為輸入矩陣的行列數。
//動態規劃
//時間複雜度o(mn)
//空間複雜度o(mn)
public int maximalsquare(char matrix)
for(int i=0; i<=low; i++)
for(int i=0; iret)
ret = dp[i+1][j+1];
}} return ret*ret;
}
Leetcode 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 思路 和最大長方形類似 可以參照不過每次的max換位長和寬中選取最小值,算他們的平方 提交的 class solu...
LeetCode 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 思路 本題需要返回矩陣中最大的正方形面積,計算正方形面積只要知道邊長即可。申請乙個跟matrix矩陣維度相同的...
leetcode221 最大正方形
在乙個由 0 和 1 組成的二維矩陣內,找到只包含 1 的最大正方形,並返回其面積。示例 輸入 10 1001 0111 1111 1100 10輸出 4暴力 以每乙個為1的元素開始求向右向下發展的最大結果 class solution return res res private void dfs...