LeetCode 2943.最大化网格图中正方形空洞的面积:小小思维

【LetMeFly】2943.最大化网格图中正方形空洞的面积:小小思维

力扣题目链接:https://leetcode.cn/problems/maximize-area-of-square-hole-in-grid/

给你一个网格图,由n + 2横线段m + 2竖线段组成,一开始所有区域均为1 x 1的单元格。

所有线段的编号从1开始。

给你两个整数nm

同时给你两个整数数组hBarsvBars

  • hBars包含区间[2, n + 1]互不相同的横线段编号。
  • vBars包含[2, m + 1]互不相同的竖线段编号。

如果满足以下条件之一,你可以移除两个数组中的部分线段:

  • 如果移除的是横线段,它必须是hBars中的值。
  • 如果移除的是竖线段,它必须是vBars中的值。

请你返回移除一些线段后(可能不移除任何线段),剩余网格图中最大正方形空洞的面积,正方形空洞的意思是正方形内部不含有任何线段。

示例 1:

输入:n = 2, m = 1, hBars = [2,3], vBars = [2]输出:4解释:左边的图是一开始的网格图。 横线编号的范围是区间 [1,4] ,竖线编号的范围是区间 [1,3] 。 可以移除的横线段为 [2,3] ,竖线段为 [2] 。 一种得到最大正方形面积的方法是移除横线段 2 和竖线段 2 。 操作后得到的网格图如右图所示。 正方形空洞面积为 4。 无法得到面积大于 4 的正方形空洞。 所以答案为 4 。

示例 2:

输入:n = 1, m = 1, hBars = [2], vBars = [2]输出:4解释:左边的图是一开始的网格图。 横线编号的范围是区间 [1,3] ,竖线编号的范围是区间 [1,3] 。 可以移除的横线段为 [2] ,竖线段为 [2] 。 一种得到最大正方形面积的方法是移除横线段 2 和竖线段 2 。 操作后得到的网格图如右图所示。 正方形空洞面积为 4。 无法得到面积大于 4 的正方形空洞。 所以答案为 4 。

示例 3:

输入:n = 2, m = 3, hBars = [2,3], vBars = [2,3,4]输出:9解释:左边的图是一开始的网格图。 横线编号的范围是区间 [1,4] ,竖线编号的范围是区间 [1,5] 。 可以移除的横线段为 [2,3] ,竖线段为 [2,3,4] 。 一种得到最大正方形面积的方法是移除横线段 2、3 和竖线段 3、4 。 操作后得到的网格图如右图所示。 正方形空洞面积为 9。 无法得到面积大于 9 的正方形空洞。 所以答案为 9 。

提示:

  • 1 <= n <= 109
  • 1 <= m <= 109
  • 1 <= hBars.length <= 100
  • 2 <= hBars[i] <= n + 1
  • 1 <= vBars.length <= 100
  • 2 <= vBars[i] <= m + 1
  • hBars中的值互不相同。
  • vBars中的值互不相同。

解题方法:最大连续

简单换个思维,m i n ( 水平方向移除一些线后的最大连续空格 , 竖直方向移除一些线后的最大连续空格 ) min(水平方向移除一些线后的最大连续空格, 竖直方向移除一些线后的最大连续空格)min(水平方向移除一些线后的最大连续空格,竖直方向移除一些线后的最大连续空格)即为方形的最大边长。

水平方向移除一些线后的最大连续空格数是多少呢?很简单,把所有能移除的都移除呗。具体来说:

使用一个变量l a s t lastlast记录当前空格向右处理到哪条线了,使用一个变量c n t cntcnt记录当前空格的连续长度。

遍历分隔线数组,如果当前能移除的分隔线正好等于l a s t + 1 last+1last+1,则空格可以继续网友拓展(更新c n t + 1 cnt+1cnt+1,更新l a s t + 1 last+1last+1);

否则,说明上个连续空格无法拓展到这条线,更新答案最大值,并将c n t cntcnt初始化为2 22(这条线可以移除,空格长度为2),更新last为当前这条线。

  • 时间复杂度O ( h log ⁡ h + v log ⁡ v ) O(h\log h+v\log v)O(hlogh+vlogv),其中h = l e n ( h B a r s ) h=len(hBars)h=len(hBars)v = l e n ( v B a r s ) v=len(vBars)v=len(vBars)
  • 空间复杂度O ( log ⁡ h + log ⁡ v ) O(\log h+\log v)O(logh+logv),时空复杂度的主要来源都是排序,因为题目没说给定分隔线有序。

AC代码

C++
/* * @LastEditTime: 2026-01-15 10:20:39 */classSolution{private:intgetMaxDiff(vector<int>&v){intlast=1,cnt=1,ans=1;for(intt:v){if(t==last+1){cnt++;last++;}else{ans=max(ans,cnt);cnt=2;last=t;}}ans=max(ans,cnt);returnans;}public:intmaximizeSquareHoleArea(intn,intm,vector<int>&hBars,vector<int>&vBars){sort(hBars.begin(),hBars.end());sort(vBars.begin(),vBars.end());intside=min(getMaxDiff(hBars),getMaxDiff(vBars));returnside*side;}inttestGetMaxDiff(vector<int>&v){returngetMaxDiff(v);}};

同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~

千篇源码题解已开源

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

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

相关文章

别让通讯拖后腿!耐达讯自动化Profibus总线光纤中继器,助力焊接精度“一臂之力”

汽车焊装车间的工程师们&#xff0c;是不是常被这几个问题搞得头大&#xff1f;机械臂焊接精度忽高忽低、不同品牌设备“鸡同鸭讲”、改造成本高还耽误生产……这些通讯痛点&#xff0c;今天咱们就用耐达讯自动化的Profibus总线光纤中继器来解决&#xff01;电缆VS光纤&#xf…

吐血推荐10个AI论文写作软件,自考毕业论文轻松搞定!

吐血推荐10个AI论文写作软件&#xff0c;自考毕业论文轻松搞定&#xff01; 自考论文写作的救星&#xff1a;AI工具如何帮你轻松应对挑战 在自考论文写作过程中&#xff0c;许多学生常常面临时间紧张、思路混乱、格式不规范等问题。而随着AI技术的不断进步&#xff0c;越来越多…

如何在C++中使用Redis的事务功能?

一、Redis 事务核心原理&#xff08;C 视角&#xff09;Redis 事务通过 MULTI&#xff08;开启事务&#xff09;→ 执行多个命令&#xff08;入队&#xff09;→ EXEC&#xff08;提交事务&#xff09;/DISCARD&#xff08;取消事务&#xff09;完成&#xff0c;hiredis 库中需…

医疗数据用Apache Beam实时流处理稳预警

&#x1f4dd; 博客主页&#xff1a;jaxzheng的CSDN主页 实时医疗预警&#xff1a;Apache Beam驱动的流处理架构与稳健性革命目录实时医疗预警&#xff1a;Apache Beam驱动的流处理架构与稳健性革命 引言&#xff1a;医疗数据实时化浪潮中的关键瓶颈 一、技术应用场景&#xff…

C++ 中解锁 Redis

一、核心前提&#xff1a;选择 Redis C 客户端库C 本身没有内置 Redis 客户端&#xff0c;主流选择是hiredis&#xff08;官方推荐的 C 语言客户端&#xff0c;轻量、稳定&#xff0c;C 可直接调用&#xff09;&#xff0c;也是最基础、最常用的库。1. 环境安装&#xff08;以 …

互联网大厂Java求职面试实录:Spring Boot、微服务与AI技术全解析

互联网大厂Java求职面试实录&#xff1a;Spring Boot、微服务与AI技术全解析 本文通过互联网大厂Java求职者谢飞机与严肃面试官的三轮面试对话&#xff0c;涵盖Java核心技术栈、微服务、数据库、消息队列及AI应用场景&#xff0c;结合电商及智能客服业务&#xff0c;逐步深入&a…

网络安全入门教程(非常详细)从零基础入门到精通,看完这一篇你就是网络安全高手了。

关于我 我算是“入行”不久的一个新人安全工作者&#xff0c;为什么是引号呢&#xff0c;因为我是个“半个野路子”出身。早在13年的时候&#xff0c;我在初中时期就已经在90sec、wooyun等社区一直学习、报告漏洞。后来由于升学的压力&#xff0c;我逐渐淡出了安全圈子&#x…

Windows Server SMB 共享文件 回收站

1. 项目简介 ShareRecycleBin 是一个专为 Windows Server (特别是 SMB 共享环境) 设计的增量回收站服务。它通过硬链接 (Hard Link) 技术实现对文件的“即时备份”&#xff0c;并能在文件被删除时将其移动到指定的回收站目录&#xff0c;同时保留原始的目录结构和权限锁定。 …

从0到1:零基础入门黑客网络安全,这一篇就够了!(非常详细)

前言 零基础要怎么学黑客技术&#xff1f;作为八年网安人&#xff0c;分享我一套最强的学习攻略&#xff0c;就算你是新手小白&#xff0c;也可以知道从哪里开始入门&#xff01; 一、入门基础 作为没有学过计算机的新手小白&#xff0c;首先要做的就是把基础打牢&#xff0…

C语言中switch case使用技巧,告别冗长if-else代码

在C语言中&#xff0c;switch case语句是一种高效的多分支选择结构&#xff0c;相比连续的if-else语句&#xff0c;它在处理多个确定值的情况时更加清晰和简洁。合理使用switch case不仅能提高代码可读性&#xff0c;还能在某些情况下优化程序性能。本文将深入探讨switch case的…

网络安全入门到精通:2026转行必备指南,收藏这篇就够了!

网络安全入门到精通&#xff1a;2026转行必备指南&#xff0c;收藏这篇就够了&#xff01; 本文详细介绍了2026年网络安全行业的薪资情况、工作内容与前景&#xff0c;提供了从入门到专家的职业发展路径。文章涵盖网络安全基础知识、权威认证获取、实践经验积累及领域专注选择…

leetcode 870. Advantage Shuffle 优势洗牌

Problem: 870. Advantage Shuffle 优势洗牌 解题过程 贪心&#xff0c;nums2排序&#xff0c;带上索引的&#xff0c;对nu从小到大遍历的&#xff0c;排序nums1&#xff0c;对每个nu的数字i&#xff0c;从nums1中找到比它大的最小数字&#xff0c;因nu排序了&#xff0c;nums1也…

如何一步步将 ASP.NET MVC 升级为.NET

引言 将 ASP.NET MVC 应用从.NET Framework 升级到现代.NET 并不是简单的版本提升。此次迁移代表了运行时、托管模型、配置系统、依赖注入和 HTTP 流水线架构的转变。许多团队低估了这一点&#xff0c;把它当作标准的框架升级&#xff0c;结果在流程后期才发现他们应用中的核心…

文心5.0登上LMArena文本榜国内第一,1月22日或将正式发布

1月15日&#xff0c;LMArena 大模型竞技场最新排名显示&#xff0c;文心大模型ERNIE-5.0-0110以1460分登上LMArena文本榜国内第一、全球第八&#xff0c;超过GPT-5.1-High、Gemini-2.5-Pro等多款国内外主流模型。其中&#xff0c;在数学能力排名中&#xff0c;ERNIE-5.0-0110 位…

基于Flexbox的现代化CSS框架:Bulma快速入门指南

Bulma Bulma 是一个基于 Flexbox 的现代化 CSS 框架&#xff0c;专注于提供优雅的 UI 组件和响应式布局解决方案。 功能特性 纯 CSS 框架&#xff1a;项目输出仅为单个 CSS 文件&#xff08;bulma.css&#xff09;&#xff0c;不包含任何 JavaScript&#xff0c;可以与任何 …

lemon评测系统在哪下载安全?官方渠道与使用指南

对于想要获取lemon评测系统的用户来说&#xff0c;了解如何安全下载和正确使用这款工具是首要任务。作为一款性能测试软件&#xff0c;它能帮助开发者评估应用程序在不同环境下的运行表现&#xff0c;但在下载和使用过程中需要注意几个关键点。 lemon评测系统是什么软件 lemon评…

【精华收藏】模型微调技术详解:从原理到实践的全面指南,解锁大模型在医疗、金融等领域的垂直应用

模型微调是连接通用AI模型与垂直领域需求的关键技术&#xff0c;通过针对性参数优化使大模型从"博学"变为"专精"。文章详细介绍了微调原理、应用场景、分类方法&#xff08;全参数微调与参数高效微调&#xff09;、实施流程及实际案例&#xff0c;帮助开发…

【好写作AI】跨学科“鸡尾酒”调制师:专治论文“理论乱炖”与“术语打架”

好写作AI官方网址&#xff1a;https://www.haoxiezuo.cn/一、做跨学科研究的你&#xff0c;是否每天都在“学术巴别塔”里当翻译&#xff1f;术语互殴&#xff1a;A学科的“能动性”和B学科的“主体性”是一个意思吗&#xff1f;查了半天文献&#xff0c;更晕了。理论脱臼&…

绿城郑州爱心公益网站毕业论文+PPT(附源代码+演示视频)

文章目录绿城郑州爱心公益网站一、项目简介&#xff08;源代码在文末&#xff09;1.运行视频2.&#x1f680; 项目技术栈3.✅ 环境要求说明4.包含的文件列表&#xff08;含论文&#xff09;数据库结构与测试用例系统功能结构前端运行截图后端运行截图项目部署源码下载绿城郑州爱…

深度测评专科生必备!2026 TOP10 AI论文网站评测与推荐

深度测评专科生必备&#xff01;2026 TOP10 AI论文网站评测与推荐 为什么需要一份专属专科生的AI论文网站榜单&#xff1f; 随着人工智能技术在教育领域的深入应用&#xff0c;越来越多的专科生开始借助AI工具提升论文写作效率。然而&#xff0c;面对市场上五花八门的平台&…