LintCode刷題 最大正方形

2022-08-10 20:21:12 字數 869 閱讀 6850

題目描述:

在乙個二維01矩陣中找到全為1的最大正方形;

樣例:

1 0 1 0 0

1 0 1 1 1

1 1 1 1 1

1 0 0 1 0

返回 4;

演算法分析:

對於給定矩陣matrix,可以建立對應的矩陣dp,用dp[i][j]來記錄以點i,j為右下角的全1矩陣的最大邊長。同時經過分析可以得出,dp[i][j]的值與dp[i-1][j],dp[i][j-1],dp[i-1][j-1]這三者的值有關:

①若dp[i-1][j],dp[i][j-1],dp[i-1][j-1]三者中存在0值,則dp[i][j]一定為0;

②若dp[i-1][j],dp[i][j-1],dp[i-1][j-1]均不為0,則dp[i][j]為三者中的最小值+1,因為三者中的最小值一定為三者所共有的不含0的部分,否則會造成缺角;

因此對於某一點(i,j), 若matrix[i][j]=1,則動態規劃表示式為dp[i][j] = min + 1;

**:

public

class

solution

int m =matrix.length;

int n = matrix[0].length;

int res = 0;

int result = new

int[m][n];

//矩陣初始化

for(int i=0;i)

for(int j=0;j)

for(int i=1;i)

res =math.max(res,result[i][j]);}}

return res*res;

}}

191208題(最大正方形)

思路 動態規劃問題 1.設二維陣列dp m n 其中dp i j 表示以座標 i,j 為正方形右下角元素時的最大正方形的邊長。2.當前點的最大正方形邊長為上,左,左上三個點最大正方形邊長的最小值 1,也就是從這個點往這三個方向進行延伸,延伸的長度為上,左,左上三個點最大正方形邊長的最小值 1。即核心...

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 sdc2的優化思路 i 應該換成 j 關於動態規劃的題,如果遇到二維陣列的題基本都可以優化為一維陣列,就像是傳給三...

最大正方形

題目鏈結 在乙個n m的只包含0和1的矩陣裡找出乙個不包含0的最大正方形,輸出邊長。輸入格式 輸入檔案第一行為兩個整數n,m 1 n,m 100 接下來n行,每行m個數字,用空格隔開,0或1.輸出格式 乙個整數,最大正方形的邊長 輸入樣例 1 複製 4 4 0 1 1 1 1 1 1 0 0 1 1...