最大正方形

题目描述

在一个由 '0''1' 组成的二维矩阵内,找到只包含 '1' 的最大正方形,并返回其面积。

示例1:

输入:matrix = [[“1”,”0”,”1”,”0”,”0”],[“1”,”0”,”1”,”1”,”1”],[“1”,”1”,”1”,”1”,”1”],[“1”,”0”,”0”,”1”,”0”]]
输出:4

示例2:

输入:matrix = [[“0”,”1”],[“1”,”0”]]
输出:1

示例 3:

输入:matrix = [[“0”]]
输出:0

提示:

  • m == matrix.length
  • n == matrix[i].length
  • 1 <= m, n <= 300
  • matrix[i][j]'0''1'

理解&想法

待定

题解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Solution {
public int maximalSquare(char[][] matrix) {
int n=matrix.length,m=matrix[0].length;
int[][]dp=new int[n][m];
int ans=0;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(matrix[i][j]=='1'){
if(i==0||j==0){
dp[i][j]=1;
ans=Math.max(ans,dp[i][j]);
continue;
}
dp[i][j]=Math.min(Math.min(dp[i][j-1],dp[i-1][j]),dp[i-1][j-1])+1;
ans=Math.max(ans,dp[i][j]*dp[i][j]);
}
}
}
return ans;
}
}