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

第 478 场周赛Q3——3761. 镜像对之间最小绝对距离

题目链接:3761. 镜像对之间最小绝对距离(中等)

算法原理:

👉对应力扣题解

解法:哈希表

54ms击败77.45%

时间复杂度O(N)

①使用哈希表:既然要找两个数之间的距离,那么可以把一个存进哈希表,在遍历的时候判断两数之间能否匹配上,从而更新距离

②更新最后一次出现位置:由于要求的是最小的绝对距离,所以要更新把出现的位置更新到最后一次,从而保证距离最小而不是最大

③哈希表记录更早信息:明确哈希表中存的是什么,存的是<数,最后一次出现下标>,那么这个数是什么数呢?答案是要存“在当前位置看来,之前出现过的当前位置的数”也就是在当前位置的数看来是当前位置的数翻转过的数,为什么不存原始数,然后检查当前数翻转后是否等于原始数呢?首先明确:在当前位置看来,之前出现过的当前位置的数的位置为i,因为题目要求的是 reverse(nums[i]) == nums[j],而咱们遍历的就是 j ,如果存之前的原始数就会变成 nums[i]==reverse(nums[j]),正好与题意要求相反,所以存进哈希表的是当前数翻转过的数

④总结以上思路:遍历数组,直接用当前数当key,检查之前是否有翻转数==key,有的话就更新最小距离,之后更新此数的翻转数的最后一次出现位置,最后检查ret是否存了最小距离,没存就代表没有符合题意的数,直接返回-1

Java代码:

class Solution { public int minMirrorPairDistance(int[] nums) { int n=nums.length; int ret=0x3f3f3f3f; //存<数,最后一次出现下标> //哈希表:记录更早的信息 Map<Integer,Integer> hash=new HashMap<>(); for(int j=0;j<n;j++){ int cur=nums[j]; //直接用当前数当key,检查之前是否有翻转数==key //如果把cur存进哈希表,然后查找cur的翻转值就会变成: //nums[i]==reverse(nums[j]) //与题目要求的reverse(nums[i]) == nums[j]相反 //就是i<j要成立,所以记录更早信息,要存cur的翻转值 if(hash.containsKey(cur)) ret=Math.min(ret,j-hash.get(cur)); hash.put(reverse(cur),j); } return ret==0x3f3f3f3f?-1:ret; } private int reverse(int n){ int ret=0; //自动去除了前导0 while(n!=0){ int t=n%10; ret=ret*10+t; n/=10; } return ret; } }
http://www.jsqmd.com/news/522723/

相关文章:

  • 算法:动态规划基础(中):树型dfs+回溯+记忆化搜索
  • 雯雯的后宫-造相Z-Image-瑜伽女孩保姆级教程:从镜像拉取到生成首张瑜伽图
  • 论文阅读 EMNLP 2025 Reasoning-to-Defend: Safety-Aware Reasoning Can Defend Large Language Models from Ja
  • VideoAgentTrek-ScreenFilter效果展示:同一视频不同conf阈值下的漏检/误检对比
  • 卡证检测模型在低代码平台中的应用:赋能业务人员快速搭建应用
  • MATLAB实战:蓝牙GFSK调制解调全流程解析(附误码率优化技巧)
  • WuliArt Qwen-Image Turbo 5分钟极速部署:24G显存跑通高清文生图
  • 墨语灵犀保姆级教程:Mac M1/M2芯片原生支持部署与性能实测
  • 新手必看!Docker pull报错全攻略:从超时到认证失败的7种解决方案
  • Phi-3-mini-128k-instruct一文详解:Phi-3系列中唯一支持128K上下文的指令模型
  • AST | 西工大崔榕峰、张伟伟等:基于物理约束与双并行注意力UNet++的高保真度三维机翼流场重构研究
  • Unity弹窗背景虚化效果实战:5分钟搞定高斯模糊Shader(附完整代码)
  • 储能系统——05 常用一二次电缆
  • Self-Play RL实战:如何用Python和OpenAI Gym搭建自己的AI对弈环境
  • 3个核心功能让零基础用户实现高效地理数据编辑
  • mPLUG视觉问答作品展示:餐厅菜单价格识别案例
  • 幻镜视觉重构实验室部署:Kubernetes集群中幻镜服务弹性扩缩容实践
  • K210串口通信实战:从引脚映射到数据回传(附完整代码)
  • Qwen2.5-Coder-1.5B代码实例:生成符合PEP8/Pylint标准的Python代码
  • 学Simulink——基于 Simulink 的 高升压比 Boost 变换器软开关控制
  • 黄金期启航:3-6岁幼儿英语启蒙机构科学选择全指南 - 品牌2025
  • Apache Spark 第 6 章 附加篇:Tungsten 引擎深度解析
  • Codeforces Round 1086 (Div. 2)复盘
  • 2025-2026年Jira替代软件推荐:敏捷开发团队高性价比替代方案深度评测 - 品牌推荐
  • C++ Stack_queue的入门使用与模板进阶
  • 别再只盯着飞控了!用大疆PSDK开发无人机负载,解锁Matrice 30行业应用新玩法
  • 深聊黑龙江专业的铝塑门窗厂家,哪家值得选 - mypinpai
  • MedGemma应用实战:构建医学影像教学演示系统
  • Gemma-3-270m多场景落地:写邮件、做摘要、答问题——一文详解
  • Step3-VL-10B-Base学术写作助手:LaTeX文档自动插图与配文