【亡羊补牢】挑战数据结构与算法 第66期 LeetCode 221. 最大正方形(DP)
发布日期:2021-06-29 14:34:45
浏览次数:2
分类:技术文章
本文共 1162 字,大约阅读时间需要 3 分钟。
仰望星空的人,不应该被嘲笑
题目描述
在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。
示例:
输入: 1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0输出: 4
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/maximal-square 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。解题思路
要想求得最大正方形,通过找规律,我们不难发现,对于(i > 0 && j > 0)情况,当前位置边长长度等于左,左上,上三个方向边长长度的最小值,然后加1,于是我们遍历整个矩阵,对于当前值为1的情况,我们每次求一下它能拓展到的最大边长,然后每次迭代求出结果的最大边长,那么面积就是边长*边长返回即可。
/** * @param {character[][]} matrix * @return {number} */var maximalSquare = function (matrix) { if (!matrix || !matrix.length) return 0; let res = 0; // 设置最长边长变量 let n = matrix.length, m = matrix[0].length; for (let i = 0; i < n; i++) { for (let j = 0; j < m; j++) { if (matrix[i][j] == 1) { // 对于(i > 0 && j > 0)情况,当前位置边长长度等于左,左上,上三个方向边长长度的最小值,然后加1 (i > 0 && j > 0) && (matrix[i][j] = Math.min(matrix[i - 1][j], matrix[i - 1][j - 1], matrix[i][j - 1]) + 1); } res = Math.max(res, matrix[i][j]); // 迭代求最长边长 } } return res ** 2; // 返回边长*边长};
最后
文章产出不易,还望各位小伙伴们支持一波!
往期精选:
小伙伴们可以在Issues中提交自己的解题代码,🤝 欢迎Contributing,可打卡刷题,Give a ⭐️ if this project helped you!
,方便小伙伴阅读玩耍~
学如逆水行舟,不进则退
转载地址:https://chocolate.blog.csdn.net/article/details/108939909 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
感谢大佬
[***.8.128.20]2024年04月27日 08时44分24秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
python入门之--类与对象
2019-04-29
java 设计模式1--工厂模式3种
2019-04-29
java 设计模式2--单例模式6种
2019-04-29
java设计模式3--建造者模式
2019-04-29
java 设计模式4--原型模式
2019-04-29
java设计模式5--适配器模式
2019-04-29
java设计模式6--桥梁模式
2019-04-29
《python从入门到实践》pygame安装,制作小游戏
2019-04-29
jfinal框架项目--学习笔记
2019-04-29
java 位运算简单应用
2019-04-29
人工智能: 初探
2019-04-29
linux三剑客---shell脚本:bash
2019-04-29
linux 三剑客--sed[行式编辑]
2019-04-29
java多态(属性?静态方法?)--内部类定义?
2019-04-29
java: list容器元素去重(3种方法)
2019-04-29
java: 文件夹的递归拷贝/删除
2019-04-29
java: io操作---文件按指定大小拆分合并1
2019-04-29
linux: shell脚本日常功夫
2019-04-29
linux脚本: 批量管理主机
2019-04-29
scala集合类型,函数
2019-04-29