LeetCode 221. 最大正方形(DP)

文章目录

    • 1. 题目信息
    • 2. 解题

1. 题目信息

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

示例:
在这里插入图片描述

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/maximal-square
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

类似题目:LeetCode 85. 最大矩形(DP,难)
在这里插入图片描述
在这里插入图片描述

class Solution {
public:int maximalSquare(vector<vector<char>>& matrix) {if(matrix.empty())return 0;int i, j, n, incr, maxEdgeLen = 0;int r = matrix.size(), c = matrix[0].size();int dp[r][c];//以右下角为结束的最大正方形边长for(i = 0; i < r; ++i)for(j = 0; j < c; ++j){dp[i][j] = 0;//初始化为0}for(i = 0; i < c; ++i)//第一行填表{if(matrix[0][i] == '1')dp[0][i] = 1;}for(i = 1; i < r; ++i)//第一列填表{if(matrix[i][0] == '1')dp[i][0] = 1;}for(i = 1; i < r; ++i)for(j = 1; j < c; ++j){if(matrix[i][j] == '0')dp[i][j] = 0;else//matrix[i][j] == '1'{n = dp[i-1][j-1];incr = 0;while(n--){incr++;//记录同时为1的次数if(matrix[i-incr][j] == '1' && matrix[i][j-incr] == '1'){continue;//往左和往上同时判断都为1吗?}else//有中断则跳出{incr--;break;}}dp[i][j] = 1+incr;}}for(i = 0; i < r; ++i)for(j = 0; j < c; ++j){if(dp[i][j] > maxEdgeLen)//寻找最大边长maxEdgeLen = dp[i][j];}return maxEdgeLen*maxEdgeLen;//返回最大面积}
};

在这里插入图片描述

  • 又发现以(i,j)为右下角的最大正方形边长 dp[i][j] 就是 min(dp[i-1][j], dp[i][j-1], dp[i-1][j-1])(i,j 位置左上角3个点的最大边长中的最小者)
    对以上结论,可以自己尝试将1变成0, 0变成1,自己画个图试下。

对上面程序进行小的修改

在这里插入图片描述

class Solution {
public:int maximalSquare(vector<vector<char>>& matrix) {if(matrix.empty())return 0;int i, j, n, incr, maxlen = 0;int r = matrix.size(), c = matrix[0].size();int dp[r][c];//以右下角为结束的最大正方形边长memset(dp,0,sizeof(dp));for(i = 0; i < c; ++i)//第一行填表{if(matrix[0][i] == '1')dp[0][i] = 1,maxlen = 1;}for(i = 1; i < r; ++i)//第一列填表{if(matrix[i][0] == '1')dp[i][0] = 1,maxlen = 1;}for(i = 1; i < r; ++i){for(j = 1; j < c; ++j){if(matrix[i][j]=='1'){dp[i][j] = 1+min(dp[i-1][j], min(dp[i][j-1], dp[i-1][j-1]));maxlen = max(maxlen, dp[i][j]);}}}return maxlen*maxlen;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/479810.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

anaconda配置虚拟环境

一般是在服务器上&#xff0c;创建一个自己的虚拟环境&#xff0c;自己来用&#xff0c;不影响别人的环境&#xff0c;也不用被别人安装环境影响。 打开终端 1.查看当前存在哪些虚拟环境 conda env list 或 conda info -e 2.创建名字为 lly_env 的虚拟环境(名字自己取一个&am…

论文浅尝 | 知识图谱推理中表示学习和规则挖掘的迭代学习方法

作者&#xff1a;张文&#xff0c;浙江大学在读博士&#xff0c;研究方向为知识图谱的表示学习&#xff0c;推理和可解释。本文是我们与苏黎世大学以及阿里巴巴合作的工作&#xff0c;发表于WWW2019&#xff0c;这篇工作将知识图谱推理的两种典型方法&#xff0c;即表示学习和规…

21个深度学习调参的实用技巧

文 | AI_study源 | AI算法与图像处理导读在学习人工智能的时候&#xff0c;不管是机器学习还是深度学习都需要经历一个调参的过程&#xff0c;参数的好坏直接影响着模型效果的好坏。本文总结了在深度学习中21个实用的调参的技巧&#xff0c;快来学习吧&#xff01;这篇文章在国…

从Java程序员进阶为架构师,全套16张图概括最全技能!建议收藏!

如何从程序员进阶到架构师&#xff1f;今天完整的把我积累的经验和技能分享给大家&#xff01; 作者&#xff1a;陈睿|优知学院创始人 数据结构算法程序 数据是一切能输入到计算机的信息总和&#xff0c;结构是指数据之间的关系&#xff0c;数据结构就是将数据及其之间的关系有…

Python 爬虫系列教程一爬取批量百度图片

原文地址&#xff1a;https://blog.csdn.net/qq_40774175/article/details/81273198 很久之前就学习了Python的爬虫了&#xff0c;也用来做过一些项目&#xff08;主要是一些课程项目&#xff09;&#xff0c;但时间比较紧&#xff0c;一直没有空把它写下来&#xff0c;这个暑假…

论文浅尝 | 利用知识图谱嵌入和图卷积网络进行长尾关系抽取

论文笔记整理&#xff1a;王狄烽&#xff0c;南京大学硕士&#xff0c;研究方向为关系抽取、知识库补全。链接&#xff1a;https://arxiv.org/pdf/1903.01306.pdf发表会议&#xff1a;NAACL2019动机现有的利用远程监督进行实体关系抽取的方法大多关注于如何对训练数据进行降噪&…

人脑是怎么防止梯度消失和梯度爆炸的?

文 | 极市平台源 | 知乎问答导读梯度消失和梯度爆炸一直是深度学习的难点&#xff0c;而人脑有接近900亿个神经元&#xff0c;可以说是一个非常规模庞大的网络。那么人脑是如何防止梯度消失和梯度爆炸的&#xff1f;观点一作者丨冒蓝火的加特林感觉这个问题跟我的科研方向有一点…

史上最全java架构师技能图谱(下)

“java架构史上最全技能图谱分为上下两篇&#xff0c;这是java架构史上最全图谱下篇&#xff0c;包含&#xff1a; 大数据以及性能、设计模式、UML、中间件、分布式集群、负载均衡、通讯协议、架构设计等技术图谱等章节。 如果需要上篇内容&#xff1a;数结构算法、java进阶、…

Git基本指令

一、创建本地仓库进行版本控制 在工作区 local_repository 新建readme.txt文件&#xff1a; git init &#xff1a;初始化一个空的本地仓库&#xff0c;并在本地仓库生成了.git 文件git add readme.txt &#xff1a;将文件放到暂存区&#xff0c;表示这个文件受git管理git co…

LeetCode 21. 合并两个有序链表(单链表)

文章目录1. 题目信息2. 解题1. 题目信息 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例&#xff1a;输入&#xff1a;1->2->4, 1->3->4 输出&#xff1a;1->1->2->3->4->4来源&#xff1a…

一文读懂最强中文NLP预训练模型ERNIE

基于飞桨开源的持续学习的语义理解框架ERNIE 2.0&#xff0c;及基于此框架的ERNIE 2.0预训练模型&#xff0c;在共计16个中英文任务上超越了BERT和XLNet, 取得了SOTA效果。本文带你进一步深入了解ERNIE的技术细节。 一&#xff1a;ERNIE 简介 1.1 简介 Google 最近提出的 BER…

BERT原理、代码、相关模型、精调技巧,看这个就够了

星标/置顶小屋&#xff0c;带你解锁最萌最前沿的NLP、搜索与推荐技术2018 年 10 月&#xff0c;由 Google 推出的 BERT 模型一鸣惊人&#xff0c;刷爆了各路榜单&#xff0c;甚至超越了人类基线分数&#xff0c;实现了 NLP 领域里程碑式的突破。 如今&#xff0c;对于 NLP 算法…

论文浅尝 | 利用 KG Embedding 进行问题回答

论文笔记整理&#xff1a;吴杨&#xff0c;浙江大学计算机学院&#xff0c;知识图谱、NLP方向。http://research.baidu.com/Public/uploads/5c1c9a58317b3.pdf动机本文主要针对基于知识库的问题回答中的简单问题&#xff0c;也就是问题的答案只涉及KG中的一跳&#xff0c;此类问…

想成为阿里160万年薪的P8架构师?你必须掌握如下6大技能体系!

程序设计和开发 数据结构和算法&#xff1a;常用数据结构&#xff0c;排序&#xff0c;检索等 面向对象编程、设计模式&#xff0c;掌握建模语言和建模工具&#xff1a;UML、MVC编程思想 高质量编码能力&#xff1a;重用性&#xff0c;低耦合&#xff0c;可扩展性&#xff0c…

技术动态 | 知识图谱的策展

作者&#xff1a;Jiaoyan Chen, Senior Researcher, Department of Computer Science, University of Oxford, Research interests: Knowledge Base, Knowledge-based Learning, Machine Learning Explanation.知识图谱在众多的领域中发挥了重要作用&#xff0c;比如聊天机器人…

21届校招薪资曝光:严重倒挂老员工!

源 | 量子位一开始&#xff0c;还以为是科技互联网公司招聘的新把式。因为就在最近&#xff0c;一张美团应届生薪资的截图&#xff0c;在各大社区和校招群里火了。仅仅算法岗、开发岗的薪资白菜价&#xff0c;就有27k15.5&#xff0c;算下来&#xff0c;年薪就有41万。虽然这两…

从Java程序员进阶到架构师,6大核心技能要领详解

“ java架构师技能将分为如下6大环节&#xff1a;数据结构和算法&#xff0c;Java高级特性&#xff0c;Java web核心&#xff0c;数据库&#xff0c;Java框架与必备工具&#xff0c;系统架构设计。 希望能真正帮助到从程序员进阶到架构师之路的朋友。 数据结构和算法 算法分…

领域应用 | ​英文抗生素药物医学知识图谱 IASO1.0 版发布 线上试用正式启动

本文转载自公众号&#xff1a;PKU自然语言处理前沿。近日&#xff0c;由北京大学互联网信息工程研发中心&#xff08;CIRE&#xff09;开发的英语医学知识图谱英文抗生素药物医学知识图谱IASO1.0发布&#xff0c;面向公众正式开放试用。IASO是利用自然语言处理与文本挖掘技术&a…

谷歌大改Transformer注意力,速度大涨,显存大降!

源 | 机器之心导读考虑到 Transformer 对于机器学习最近一段时间的影响&#xff0c;这样一个研究就显得异常引人注目了。Transformer 有着巨大的内存和算力需求&#xff0c;因为它构造了一个注意力矩阵&#xff0c;需求与输入呈平方关系。谷歌大脑 Krzysztof Choromanski 等人最…