leetcode 221 最大正方形(動態規劃)

2021-09-24 06:12:44 字數 1129 閱讀 6786

在乙個由 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矩陣維度相同的...