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

第 178 场双周赛Q2:101005. 数对的最大公约数之和

题目链接:101005. 数对的最大公约数之和(中等)

算法原理:

解法:模拟

92ms击败12.06%

时间复杂度O(n⋅logn)

模拟思路很简单:

①按题意构造prefixGcd数组:一个for循环解决

②给prefixGcd数组排序:Arrays.sort(prefixGcd)解决

③封装找最大公约数的方法:之前做过类似题目如下👇

D.二分查找-二分答案-第K小/第K大——878. 第 N 个神奇数字

A.每日一题——2654. 使数组所有元素变成 1 的最少操作次数

D.二分查找-二分答案-第K小/第K大——1201. 丑数 III

写法有循环法和递归法两种,我们任选一种即可

④首尾两数两两配对,将二者的gcd累加进结果:经典的双指针模型:对撞双指针👇

一轮复习——B.双指针模型总结

优化

69ms击败89.36%

时间复杂度O(n⋅logn)

①GCD 实现(首要原因)
迭代版(int 版):纯 while 循环,无函数调用 / 栈帧开销,指令紧凑
递归版(long 版):每次调用创建 / 销毁栈帧(Java 无尾递归优化),多次调用开销累积
②数据类型(次要原因)
int(4 字节):CPU 缓存命中率高,算术运算(%/max)更高效
long(8 字节):缓存命中率低,运算 / 内存操作耗时翻倍
③排序 / 转换(细节补充)
Arrays.sort(int[]) 比 sort(long[]) 比较 / 交换开销更小
long 版存在 int→long 隐式转换,迭代版无此冗余

Java代码:

class Solution { public long gcdSum(int[] nums) { int n=nums.length; long[] prefixGcd=new long[n]; long mxi=0; for(int i=0;i<n;i++){ mxi=Math.max(mxi,nums[i]); prefixGcd[i]=gcd(nums[i],mxi); } Arrays.sort(prefixGcd); long ret=0; int left=0,right=n-1; while(left<right){ ret+=gcd(prefixGcd[left],prefixGcd[right]); left++; right--; } return ret; } //获取最大公约数 private long gcd(long a,long b){ return b==0?a:gcd(b,a%b); } }
class Solution { //优化 public long gcdSum(int[] nums) { int n=nums.length; int[] prefixGcd=new int[n]; int mxi=0; for(int i=0;i<n;i++){ mxi=Math.max(mxi,nums[i]); prefixGcd[i]=gcd(nums[i],mxi); } Arrays.sort(prefixGcd); long ret=0; int left=0,right=n-1; while(left<right){ ret+=gcd(prefixGcd[left],prefixGcd[right]); left++; right--; } return ret; } //获取最大公约数 private int gcd(int a,int b){ while(a!=0){ int tmp=a; a=b%a; b=tmp; } return b; } }
http://www.jsqmd.com/news/482999/

相关文章:

  • ChatTTS克隆音色实战:如何高效构建个性化语音合成系统
  • Markdown Preview Enhanced:重新定义VS Code文档创作体验
  • MogFace模型Typora文档美化:将模型部署步骤与效果图写成优雅的技术文档
  • DAMOYOLO-S实战教程:将检测结果接入OpenCV二次开发流程
  • Airtest图像识别避坑指南:如何提高匹配精度避免误点击(附阈值调整技巧)
  • MedGemma 1.5效果展示:同一问题不同CoT路径对比——体现推理鲁棒性
  • SSD控制器探秘:从指令集到HMB,解锁高性能存储的底层逻辑
  • Phi-3-vision-128k-instruct真实案例:教育类APP中数学题截图→题干提取→分步解答生成
  • 霜儿-汉服-造相Z-Turbo功能体验:专为汉服人像优化的文生图模型实测
  • 霜儿-汉服-造相Z-Turbo开发环境配置:IntelliJ IDEA远程调试与GPU监控
  • 数据主权时代:如何用WeChatMsg掌控你的社交记忆
  • League Toolkit v1.3.3技术白皮书:重新定义英雄联盟辅助体验
  • Photon-GAMS光影包完全指南:解锁Minecraft电影级视觉体验的黑科技
  • SecGPT-14B一文详解:SecGPT-14B如何通过网络安全领域强化训练降低幻觉率
  • MacOS M2 环境下通过 Homebrew 高效安装与配置 Pandoc 以支持 Typora 文档转换
  • 【2026年最新600套毕设项目分享】springboot电子政务服务管理系统(14146)
  • 面向综合能源园区的三方市场主体非合作方法探索
  • 基于Lychee-Rerank的智能邮件分类系统:自动识别重要邮件
  • PROJECT MOGFACE开发者利器:集成Git进行模型版本管理与协作
  • K-means算法避坑指南:如何避免陷入局部最优解?
  • Arch Linux更新报错?手把手教你修复community.db下载失败问题(附最新pacman配置指南)
  • PvZ Toolkit植物大战僵尸修改工具完全使用指南
  • 从零到一:基于STM32F103与ACS712的电流检测系统实战
  • Python-flask小程序 汉服交易服装商城小程序66c45
  • Fish Speech 1.5效果展示:会议纪要自动转语音+重点内容语音标注
  • MogFace-large参数调优指南:置信度阈值/NMS IOU对召回率影响分析
  • MLX90640迷你热像仪管道测温电路维修酒店巡检科研实验数据采集image1、描述这是一款MINI科研实验测温热成像多功能热像记录仪,小巧轻便,设备长宽为3746mm,带TYPEC充电数据接口
  • 2026年人生仓库公司产品大揭秘:改变生活的秘密武器?
  • B站m4s缓存文件转MP4完全指南:从原理到实践
  • 3大核心功能突破窗口尺寸限制:WindowResizer革新你的显示控制体验