当前位置: 首页 > news >正文

A.每日一题——2975. 移除栅栏得到的正方形田地的最大面积

题目链接:2975. 移除栅栏得到的正方形田地的最大面积(中等)

算法原理:

解法:暴力枚举

622ms击败78.57%

时间复杂度O(N²)

此题跟上一题 A.每日一题——2943. 最大化网格图中正方形空洞的面积 的不同点👇

空洞面积题:给的可移除线条数组外的内部线条依然存在,且固定

田地面积题(此题):除了给的可移除栅栏数组外,没有其他内部栅栏,只剩下四周不可变的栅栏了

也就是说,空洞面积题不存在无解情况,最小的正方形是1×1的,而田地面积题因内部栅栏的分布可能造成无解情况,所以这时需要返回-1

这些区别也就是为什么此题不能直接沿用上一题代码的原因

此题的解题方法👇

①分别求出水平栅栏和垂直栅栏的间隙集合,枚举水平栅栏间隙集合,看垂直栅栏集合能否与之构成正方形,能的话就逐步更新取最大值

②由于间隙出现一次即可,所以用Set容器天然去重能够减少遍历次数

③求间隙过程中,由于四周最外围的栅栏不能移除,所以求间隙的时候必须参与运算,那要怎样算进去呢?

可以创建一个临时数组,遍历这个临时数组,逐步计算间隙存进哈希表,咱就可以在遍历前把这两个边界扔进临时数组,排个序就能正常求间隙了

比如网格高度 m=5,水平围栏 hFences=[2,4],临时数组先把数组扩展成 [2,4,1,5],然后排序成 [1,2,4,5]。接下来两两算差:2-1=1,4-1=3,5-1=4,4-2=2,5-2=3,5-4=1,这些差值(1,2,3,4)就是水平方向所有可能的边长,最后存到集合里返回

Java代码:

class Solution { public int maximizeSquareArea(int m, int n, int[] hFences, int[] vFences) { final int MOD=1_000_000_007; //获取水平方向所有可能的间隔长度集合 Set<Integer> hSet=f(hFences,m); //获取垂直方向所有可能的间隔长度集合 Set<Integer> vSet=f(vFences,n); int ret=0; //遍历水平方向的所有间隔长度 for(int x:hSet) //如果垂直方向也存在相同的间隔长度,说明可以围成边长为x的正方形 if(vSet.contains(x)) //更新最大边长 ret=Math.max(ret,x); return ret>0?(int)((long)ret*ret%MOD):-1; } private Set<Integer> f(int[] a,int l){ //获取原栅栏数组的长度 //比如水平围栏hFences=[2,4],m=5 int n=a.length; //复制原数组并扩容两个位置,存储两个边界点1和l //先扩容成[2,4,0,0] a=Arrays.copyOf(a,n+2); //存储起始坐标,最左最上边界 //变成[2,4,1,0] a[n++]=1; //存储结束坐标,最右最下边界 //变成[2,4,1,5] a[n++]=l; //一起排序,保证差值为正 //变成[1,2,4,5] Arrays.sort(a); //计算a中任意两个数的差,存到哈希表中 Set<Integer> set=new HashSet<>(); for(int i=0;i<n;i++) for(int j=i+1;j<n;j++) set.add(a[j]-a[i]); return set; } }
http://www.jsqmd.com/news/255624/

相关文章:

  • 从语料到模型应用|StructBERT中文情感分析镜像全链路实践
  • D.二分查找-进阶——658. 找到 K 个最接近的元素
  • Java SpringBoot+Vue3+MyBatis 抗疫物资管理系统系统源码|前后端分离+MySQL数据库
  • 【2025最新】基于SpringBoot+Vue的学生网上请假系统管理系统源码+MyBatis+MySQL
  • gpt-oss-20b-WEBUI实战:云端10分钟部署,2块钱玩一下午
  • BGE-M3一键启动:语义搜索实战指南(附避坑技巧)
  • DeepSeek-R1-Distill-Qwen-1.5B高效运维:日志监控与性能分析实战
  • 如何高效批量抠图?试试CV-UNet大模型镜像,本地部署秒级出图
  • Qwen3-VL-WEB保姆级教程:多语言文本识别实战应用
  • GPT-OSS-20B-WEBUI操作手册:管理员后台管理功能
  • Qwen3-Embedding-0.6B最佳实践:云端部署省时省力
  • 从零部署高精度中文ASR|科哥FunASR镜像全解析
  • Qwen2.5-7B模型优化:内存访问模式改进
  • UI-TARS-desktop入门实战:Qwen3-4B-Instruct模型基础功能体验
  • Hunyuan-HY-MT1.5-1.8B实操:chat_template自定义教程
  • 体验AI不花冤枉钱:云端GPU按需计费,用多少付多少
  • YOLO26适合Jetson?嵌入式部署可行性分析
  • 学生党福音!VibeThinker-1.5B帮你刷题提分
  • Qwen3-4B节省40%能耗:低精度推理部署实战评测
  • Proteus汉化补丁使用指南:实战案例演示流程
  • I2C硬件滤波对信号影响:实战案例分析去抖设计
  • 开发者必看:Qwen3Guard-Gen-WEB镜像快速部署入门教程
  • Qwen3-Reranker-4B性能优化:让文本排序速度提升3倍
  • Paraformer-large识别精度低?Punc标点模块调优实战案例解析
  • BGE-Reranker-v2-m3为何选它?高精度rerank模型对比分析
  • NewBie-image-Exp0.1部署手册:GPU资源配置与显存优化技巧
  • 手把手教你用Z-Image-Turbo生成图片,附避坑指南
  • 一键生成个性化语音!Voice Sculptor镜像使用全解析
  • 从零开始使用AutoGen Studio开发AI应用
  • Qwen1.5-0.5B-Chat工具推荐:Transformers CPU适配镜像测评