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

每日一道leetcode(2026.04.11):三个相等元素之间的最小距离 II

每日一道leetcode(2026.04.11):三个相等元素之间的最小距离 II

  • 1. 题目
  • 2. 分析
  • 3. 代码实现

1. 题目

给你一个整数数组 nums。

如果满足 nums[i] == nums[j] == nums[k],且 (i, j, k) 是 3 个 不同下标,那么三元组 (i, j, k) 被称为 有效三元组 。

有效三元组的距离被定义为 abs(i - j) + abs(j - k) + abs(k - i),其中 abs(x) 表示 x 的绝对值 。返回一个整数,表示 有效三元组 的 最小 可能距离。如果不存在 有效三元组 ,返回 -1。

示例 1:

输入: nums = [1,2,1,1,3]

输出: 6

解释:

最小距离对应的有效三元组是 (0, 2, 3) 。

(0, 2, 3) 是一个有效三元组,因为 nums[0] == nums[2] == nums[3] == 1。它的距离为 abs(0 - 2) + abs(2 - 3) + abs(3 - 0) = 2 + 1 + 3 = 6。

示例 2:

输入: nums = [1,1,2,3,2,1,2]

输出: 8

解释:

最小距离对应的有效三元组是 (2, 4, 6) 。

(2, 4, 6) 是一个有效三元组,因为 nums[2] == nums[4] == nums[6] == 2。它的距离为 abs(2 - 4) + abs(4 - 6) + abs(6 - 2) = 2 + 2 + 4 = 8。

示例 3:

输入: nums = [1]

输出: -1

解释:

不存在有效三元组,因此答案为 -1。

提示:

1 <= n == nums.length <= 10e5
1 <= nums[i] <= n

2. 分析

这道题和每日一道leetcode(2026.04.11):三个相等元素之间的最小距离 I的题目描述是一模一样的,只是n的取值范围从100扩大到了10e5,所以如果是简单的三层遍历,定然会超时。

我这里的思路是先通过一层遍历,把我有出现过三次的数值的下标给收集起来,然后再挨个遍历这些出现次数大于等于三的下标,计算最短的距离。指的注意的是,三个不同下标的两两距离之和,只与两端的下标有关。设下标依次别为i,j,k,那么距离之和为(j-i)+(k-i)+(k-j)=2(k-i)

3. 代码实现

classSolution{publicintminimumDistance(int[]nums){intn=nums.length;//找出所有出现三次以上的数值int[]arr=newint[n+1];Arrays.fill(arr,-1);Map<Integer,List<Integer>>map=newHashMap<>();for(inti=0;i<n;i++){if(arr[nums[i]]==-1){arr[nums[i]]=i;continue;}if(!map.containsKey(nums[i])){ArrayList<Integer>list=newArrayList<>();list.add(arr[nums[i]]);map.put(nums[i],list);}map.get(nums[i]).add(i);}AtomicIntegerminDistance=newAtomicInteger(Integer.MAX_VALUE);map.forEach((key,value)->{intsize=value.size();if(size<3){return;}for(inti=0;i<size&&i+2<size;i++){minDistance.set(Math.min(minDistance.get(),Math.abs(value.get(i+2)-value.get(i))));}});returnminDistance.get()==Integer.MAX_VALUE?-1:minDistance.get()*2;}}

http://www.jsqmd.com/news/639983/

相关文章:

  • 2026 年度内蒙古大疆机场销售服务商实力解析(家庭 + 商业场景) - 深度智识库
  • 5分钟极速部署:开源在线PPT编辑器的完整配置指南
  • JD-AssistantV2:京东抢购助手的终极使用指南,轻松秒杀心仪商品!
  • 创思特优选商城APP开发关键要点
  • 告别枯燥理论!用Multisim和DS-VLAB手把手搭建你的第一个全加器(附保姆级避坑指南)
  • 深度解析MelonLoader:Unity游戏模组加载器的架构设计与系统优化
  • 终极指南:如何用ROFL-Player解锁英雄联盟回放文件的全部价值
  • 如何通过伪静态和面板工具实现顶级域名到www域名的301重定向
  • 1Fichier下载管理器:分布式代理加速架构革新
  • 注意力头坍缩、模态偏置、时序错位——多模态大模型推理失效的三大隐性杀手,工程师必须在部署前48小时识别!
  • 职业倦怠了?用这7个方法重燃你的技术热情
  • 如何用ncmdumpGUI三分钟解锁网易云音乐NCM文件:Windows用户必备的音乐自由工具
  • 如何快速提升Excel查询效率:面向新手的完整Excel多文件查询工具指南
  • 化工标签打印软件推荐
  • 2026届毕业生推荐的十大降重复率网站实际效果
  • 实测飞算JavaAI vs Copilot:效率提升不是一点点,完整项目生成才是关键差距
  • 5分钟掌握pyvideotrans:让视频翻译配音变得像喝水一样简单
  • Figma中文插件终极指南:3分钟实现完整界面汉化
  • 终极指南:5分钟掌握Windows任务栏透明艺术,让你的桌面焕然一新
  • QMC-Decoder:3分钟解锁QQ音乐加密文件的终极解决方案
  • 3分钟彻底告别风扇噪音!Windows风扇智能控制神器完全指南 [特殊字符]
  • Android Studio集成科大讯飞声纹识别API实战:从踩坑到上线的完整避坑指南
  • 权威榜单揭晓,2026年探针台主流品牌GBITEST(易捷测试)八大高品质探针台推荐
  • Cursor Free VIP:3步破解AI编程助手试用限制的终极指南
  • 从信息收集到Root权限:一次完整的Lampiao靶机渗透实战解析
  • 手把手教你为Kinova机械臂创建Rviz可视化Launch文件(从Xacro到3D模型全流程)
  • OneNote到Markdown终极转换指南:免费工具实现知识库无缝迁移
  • 终极指南:如何离线退出Windows Insider预览计划
  • 盘点2026江苏农产品批发市场,江苏名仁农业口碑和环保靠谱吗 - 工业设备
  • DIY高速脉冲发生器:3种实用方案对比与实战指南