news 2026/4/22 14:08:41

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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; } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 11:20:23

NewBie-image-Exp0.1部署手册:GPU资源配置与显存优化技巧

NewBie-image-Exp0.1部署手册&#xff1a;GPU资源配置与显存优化技巧 1. 引言 随着生成式AI在动漫图像创作领域的快速发展&#xff0c;高质量、可控性强的模型部署成为研究者和开发者关注的核心问题。NewBie-image-Exp0.1 是一款专为动漫图像生成设计的大规模扩散模型预置镜像…

作者头像 李华
网站建设 2026/4/23 11:19:04

ms-swift分布式训练指南:多卡加速实操步骤

ms-swift分布式训练指南&#xff1a;多卡加速实操步骤 1. 引言 在大模型时代&#xff0c;单卡训练已难以满足日益增长的计算需求。面对7B、13B甚至更大规模的语言模型&#xff0c;如何高效利用多张GPU进行分布式训练成为工程落地的关键环节。ms-swift作为魔搭社区推出的轻量级…

作者头像 李华
网站建设 2026/4/23 11:19:22

智能家居中Arduino安装教程的完整指南与配置步骤

从零开始搭建智能家居&#xff1a;Arduino安装与实战配置全解析 你是否曾想过&#xff0c;家里的灯光能根据环境自动调节&#xff1f;空调能在你回家前悄然启动&#xff1f;这一切并不需要昂贵的商业系统——只需一块几十元的开发板和一点动手精神&#xff0c;就能亲手打造属于…

作者头像 李华
网站建设 2026/4/23 11:22:01

ComfyUI开源贡献:向官方仓库提交PR的完整流程指导

ComfyUI开源贡献&#xff1a;向官方仓库提交PR的完整流程指导 1. 引言 1.1 背景与价值 ComfyUI 是一款基于节点式工作流设计的图形化界面工具&#xff0c;广泛应用于AI生成模型&#xff08;如Stable Diffusion&#xff09;的本地部署与交互。其核心优势在于将复杂的文本到图…

作者头像 李华
网站建设 2026/4/23 11:17:09

AI老照片修复:去除折痕与污渍的完整流程

AI老照片修复&#xff1a;去除折痕与污渍的完整流程 1. 引言 1.1 老照片修复的技术背景 随着数字技术的发展&#xff0c;越来越多的家庭开始将纸质老照片进行数字化保存。然而&#xff0c;这些照片往往因年代久远而出现折痕、污渍、褪色、模糊等问题&#xff0c;严重影响观感…

作者头像 李华
网站建设 2026/4/22 23:42:43

Qwen3-4B-Instruct-2507错误处理:异常情况应对指南

Qwen3-4B-Instruct-2507错误处理&#xff1a;异常情况应对指南 1. 背景与部署架构概述 随着大模型在实际业务场景中的广泛应用&#xff0c;稳定、高效的部署方案成为保障服务可用性的关键。Qwen3-4B-Instruct-2507作为通义千问系列中面向指令理解与多任务执行的轻量级模型&am…

作者头像 李华