在乙個由 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)
*/class
solution
// 初始化第一列
LeetCode221 最大正方形
在乙個由 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 為右下角元素的最大正方形的邊長。通過觀...
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矩陣維度相同的...