news 2026/4/13 10:22:27

第 475 场周赛Q1+Q2——3740. 三个相等元素之间的最小距离 I+3741. 三个相等元素之间的最小距离 II

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
第 475 场周赛Q1+Q2——3740. 三个相等元素之间的最小距离 I+3741. 三个相等元素之间的最小距离 II

题目链接:3740. 三个相等元素之间的最小距离 I(简单)

3741. 三个相等元素之间的最小距离 II(中等)

算法原理:

解法一:暴力枚举(3740可通过,但3741题会超时)

8ms击败17.49%

时间复杂度O(N³)

思路很简单,三层for循环依次枚举三个数,如果符合条件就逐步更新最小距离

解法二:哈希表优化

127ms击败46.39%

时间复杂度O(N)

①将数值和下标捆绑在一起存进哈希表,键为数值,值为链表,代表前面数值的下标集合,方便找到每个值的下标

②遍历哈希表,因为数值=数值本身,所以只需要遍历每个数值的下标列表,然后计算最小距离即可

③如果这个数的下标集合>3,说明它是可以计算最小距离作为返回值的

④计算距离的时候可以简单些判断:

i,i+1,i+2三个下标,分别设为x、y、z

去掉绝对值后,距离=(y-x)+(z-y)+(z-x)=2(z-x)=2(index[i+2]-index[i])

Java代码:

class Solution { //解法一:暴力枚举 public int minimumDistance(int[] nums) { int n=nums.length; if(n<3) return -1; int ret=0x3f3f3f3f; for(int i=0;i<n;i++){ for(int j=i+1;j<n;j++){ for(int k=j+1;k<n;k++){ if(nums[i]==nums[j]&&nums[j]==nums[k]) ret=Math.min(ret,Math.abs(i-j)+ Math.abs(j-k)+Math.abs(k-i)); } } } return ret==0x3f3f3f3f?-1:ret; } }
class Solution { //解法二:哈希表优化 public int minimumDistance(int[] nums) { int n=nums.length; if(n<3) return -1; int ret=0x3f3f3f3f; //利用哈希表优化 HashMap<Integer,List<Integer>> hash=new HashMap<>(); //统计每个数值的所有下标 for(int i=0;i<n;i++){ List<Integer> index=hash.getOrDefault(nums[i],new ArrayList<>()); index.add(i); hash.put(nums[i],index); } //遍历每个数值的下标列表,计算最小距离 for(Map.Entry<Integer,List<Integer>> entry:hash.entrySet()){ List<Integer> index=entry.getValue(); int len=index.size(); if(len>=3){ for(int i=0;i<=len-3;i++){ int dist=index.get(i+2)-index.get(i); //此处是去掉绝对值之后,相加得到的简化2*(i+2的位置-i的位置) if(2*dist<ret) ret=2*dist; } } } return ret==0x3f3f3f3f?-1:ret; } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/11 18:36:27

计算机毕业设计springboot基于农科所农作物信息管理系统的设计与实现 基于SpringBoot的农业科研院所作物数据智慧管理平台的设计与实现面向农科机构的SpringBoot作物全生命周期

计算机毕业设计springboot基于农科所农作物信息管理系统的设计与实现8h3n8w22 &#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。在“互联网农业”快速渗透的今天&#xff0c;农科所…

作者头像 李华
网站建设 2026/4/7 18:40:16

学习日记day64

Day64_0121专注时间&#xff1a;目标是&#xff1a;5h30~6h。实际&#xff1a;5h47min每日任务&#xff1a;饭后的休息&#xff08;25min&#xff09;&#xff0c;学习间歇的休息&#xff08;15min&#xff09;都用手表计时器来监督{step1}40min二刷1道力扣hot100昨天的题再做一…

作者头像 李华
网站建设 2026/4/12 10:19:36

springboot_ssm807古诗词数字化分享平台--论文

目录具体实现截图摘要系统所用技术介绍写作提纲源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;具体实现截图 摘要 随着数字化技术的快速发展&#xff0c;传统文化资源的保护与传承面临新的机遇与挑战。古诗词作为中华优秀传统文化的重…

作者头像 李华
网站建设 2026/4/7 16:16:54

UE5 C++(43):用 timeLine 实现开关门

&#xff08;222&#xff09;概述&#xff1a;本节里会为 timeLineActor 继续添加盒体碰撞组件&#xff0c;还有一个门&#xff0c;当 character 角色来&#xff0c;发生碰撞时&#xff0c;让那个门&#xff08;静态网络体组件&#xff09;旋转。碰撞的方面的设置&#xff0c;在…

作者头像 李华
网站建设 2026/3/31 5:12:52

【课程设计/毕业设计】基于SpringBoot的宝贝回家走失儿童报备系统基于springboot的走失儿童认领与登记系统【附源码、数据库、万字文档】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华