当前位置:网站首页>LeetCode:221. 最大正方形
LeetCode:221. 最大正方形
2022-07-06 08:44:00 【Bertil】
在一个由 ‘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.首先定义一个数组dp表示以[i][j]为正方形右下角的最大边长,定义一个变量max_len表示最大正方形的边长
2.状态转移方程:dp[i][j] = Math.min(dp[i - 1][j], dp[i][j - 1], dp[i - 1][j - 1]) + 1;(取三者的最小值是因为要构成正方形)
3.注意:若左边和上边的点为’1’,则dp[i][j] = 1
代码
/** * @param {character[][]} matrix * @return {number} */
var maximalSquare = function(matrix) {
let max_len = 0;
let dp = Array.from(Array(matrix.length), () => Array(matrix[0].length).fill(0));
for (let i = 0; i < matrix.length; i++) {
for (let j = 0; j < matrix[i].length; j++) {
if (matrix[i][j] === '1') {
if (i === 0 || j === 0) {
dp[i][j] = 1;
}else {
dp[i][j] = Math.min(dp[i - 1][j], dp[i][j - 1], dp[i - 1][j - 1]) + 1;
}
max_len = Math.max(max_len, dp[i][j]);
}
}
}
return max_len ** 2;
};
边栏推荐
- sublime text中conda环境中plt.show无法弹出显示图片的问题
- Restful API design specification
- 查看局域网中电脑设备
- [embedded] print log using JLINK RTT
- 软件卸载时遇到trying to use is on a network resource that is unavailable
- China high purity silver nitrate Market Research and investment strategy report (2022 Edition)
- 2022.02.13 - NC003. Design LRU cache structure
- [MySQL] lock
- visdom可视化实现与检查介绍
- Problems in loading and saving pytorch trained models
猜你喜欢
随机推荐
Trying to use is on a network resource that is unavailable
Unified ordering background interface product description Chinese garbled
Chrome浏览器的crash问题
Research Report on Market Research and investment strategy of microcrystalline graphite materials in China (2022 Edition)
[embedded] print log using JLINK RTT
被破解毁掉的国产游戏之光
Modify the video name from the name mapping relationship in the table
Research and investment forecast report of citronellol industry in China (2022 Edition)
Roguelike游戏成破解重灾区,如何破局?
游戏解包的危害及资源加密的重要性
有效提高软件产品质量,就找第三方软件测评机构
移位运算符
MySQL learning record 10getting started with JDBC
win10系统中的截图,win+prtSc保存位置
查看局域网中电脑设备
FairGuard游戏加固:游戏出海热潮下,游戏安全面临新挑战
JVM performance tuning and practical basic theory - Part 1
egg. JS getting started navigation: installation, use and learning
Warning in install. packages : package ‘RGtk2’ is not available for this version of R
R language ggplot2 visualization: place the title of the visualization image in the upper left corner of the image (customize Title position in top left of ggplot2 graph)







![[embedded] print log using JLINK RTT](/img/22/c37f6e0f3fb76bab48a9a5a3bb3fe5.png)
