题目地址(221. 最大正方形)
Posted 潜行前行
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了题目地址(221. 最大正方形)相关的知识,希望对你有一定的参考价值。
题目地址(221. 最大正方形)
https://leetcode-cn.com/problems/maximal-square/
题目描述
在一个由 '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'
关键点
- 依赖 dp[i-1][j-1] 的最大正方形 数
代码
- 语言支持:Java
Java Code:
class Solution
public int maximalSquare(char[][] matrix)
int[][] dp = new int[matrix.length][matrix[0].length];
int res = 0;
for(int i=0;i<matrix.length;i++)
for(int j=0;j<matrix[0].length;j++)
if(i == 0 || j==0 || dp[i-1][j-1] == 0 || matrix[i][j] == '0' )
dp[i][j] = matrix[i][j] - '0';
else
dp[i][j] = 1;
int n = dp[i-1][j-1];
for(int k = 1; k<=n; k++)
if(matrix[i-k][j] == '1' && matrix[i][j-k] == '1')
dp[i][j] += 1 ;
else
break;
res = Math.max(res,dp[i][j]);
return res * res;
创作打卡挑战赛
赢取流量/现金/CSDN周边激励大奖
以上是关于题目地址(221. 最大正方形)的主要内容,如果未能解决你的问题,请参考以下文章
[LeetCode]最大系列(最大正方形221,最大加号标志764)