221 最大正方形

2021-10-24 18:00:56 字數 1072 閱讀 7356

若某格仔值為1,則以此為右下角的正方形的、最大邊長為:上面的正方形、左面的正方形或左上的正方形中,最小的那個,再加上此格。

dp[i + 1][j + 1]表示 「以第i行、第j列為右下角的正方形的最大邊長

假設補充了多一行全'0'、多一列全'0'

dp陣列的大小也明確為new dp[height + 1][width + 1]

class solution {

public int maximalsquare(char matrix) {

// base condition,先判斷範圍

if (matrix == null || matrix.length < 1 || matrix[0].length < 1)                    return 0; 

int height = matrix.length; //length沒有括號

int width = matrix[0].length;

int maxside = 0;

// 相當於已經預處理新增第一行、第一列均為0

int dp = new int[height + 1][width + 1]; //dp[i+1][j+1] 對應i,j

for (int row = 0; row < height; row++) {

for (int col = 0; col < width; col++) {

if (matrix[row][col] == '1') {

dp[row + 1][col + 1] = math.min(math.min(dp[row + 1][col], dp[row][col + 1]), dp[row][col]) + 1;

maxside = math.max(maxside, dp[row + 1][col + 1]);

return maxside * maxside;

221 最大正方形

在乙個由 0 和 1 組成的二維矩陣內,找到只包含 1 的最大正方形,並返回其面積。輸入 1 0 1 0 0 1 01 11 1 11 11 1 0 0 1 0輸出 4動態規劃。1 狀態方程dp i j 表示右下角下標為 i,j 時的最大正方形邊長。當遇到0時,dp i j 0,肯定不能構成正方形 ...

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 當我們判斷以某個點為正方形右下角時最大的正方形時,那它的上方,左方和左上方三個點也一定是某個正方形的右下角,否則該...

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 dp水題 dp i j 表示以matrix i j 為右下角的頂點的可組成最大正方形的邊長 class solut...