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

元宝 LeetCode 3139. 使数组中所有元素相等的最小开销 Java实现

LeetCode 3139 · Minimum Cost to Equalize Array — Java 解法

题意:只能对数组元素做 +1 操作——单点 +1 花费cost1,两点同时 +1 花费cost2。目标使所有元素相等,求最小总花费(对 1e9+7 取模)。

核心思路

  • 目标值 ≥ 原数组最大值(只能增不能减),枚举目标target ∈ [maxNum, 2*maxNum)即可找到最优解。

  • totalGap = target*n - sum(nums)(总需增加的次数),maxGap = target - minNum(单个元素最多需增加的次数)。

  • 双增操作最多配对pairs = min(totalGap/2, totalGap - maxGap),其余用单增补齐。

  • cost1*2 ≤ cost2n < 3,双增不划算,直接全用单增把数组升到maxNum

class Solution { public int minCostToEqualizeArray(int[] nums, int cost1, int cost2) { final int MOD = 1_000_000_007; final int n = nums.length; int minNum = nums[0], maxNum = nums[0]; long sum = 0; for (int v : nums) { if (v < minNum) minNum = v; if (v > maxNum) maxNum = v; sum += v; } // 只用单增操作就够了 if (cost1 * 2L <= cost2 || n < 3) { long totalGap = 1L * maxNum * n - sum; return (int) ((cost1 * (totalGap % MOD)) % MOD); } long ans = Long.MAX_VALUE; // 枚举目标值 for (int target = maxNum; target < 2 * maxNum; target++) { long totalGap = 1L * target * n - sum; long maxGap = target - minNum; // 最多能配对的双增操作次数 long pairs = Math.min(totalGap / 2, totalGap - maxGap); long cost = cost1 * (totalGap - 2 * pairs) + cost2 * pairs; if (cost < ans) ans = cost; } return (int) (ans % MOD); } }

复杂度:遍历O(maxNum)O(1e6),数组扫描O(n),空间O(1)

如需我补充关键结论推导或 Python 版本也可以说~

http://www.gsyq.cn/news/1502958.html

相关文章:

  • 计算机视觉算法工程师技术成长完整指南:从零到精通的7步实战手册
  • uni-app跨端开发优缺点深度解析:2026企业项目选型指南
  • Lapce远程SSH连接性能调优实战指南:解决文件夹无响应问题深度解析
  • PrometheusAlert分布式告警路由架构:构建企业级智能消息分发系统
  • Overskride:终极 Linux 蓝牙客户端 - 10个高效管理蓝牙设备的技巧
  • 2026最新黄金回收价格行情分析 - 润富黄金回收
  • 扫地机器人公司推首款美庭专用割草机,融合双导航技术售价 1299 美元!
  • 天津无缝钢管厂家实力排行:核心资质与交付能力对比 - 奔跑123
  • 亚马逊 Echo 音箱推“睡眠工作室”:结合多平台内容,让孩子轻松入睡!
  • 恒美智造与美国CEM微波化学反应器 微波萃取仪全方位品牌对比 - 专业仪器测评品牌推荐
  • 恒美智造农药残留测试仪与岛津:农残检测仪性价比对比分析 - 专业仪器测评品牌推荐
  • 数据的加密与解密(08:51)
  • BootstrapVue Next:Vue 3与Bootstrap 5的类型安全融合解决方案
  • 《光环:进化战役》可解锁头骨道具,增强爆炸、模拟经典玩法!
  • 黄金回收常见问题 15条问答帮你避坑 - 润富黄金回收
  • 2026年宣城市黄金白银铂金彩金回收靠谱门店TOP5实力榜单无套路;实力店铺推荐及联系方式一览 - 亦辰小黄鸭
  • 如何用Sunshine免费搭建个人游戏云?终极自托管串流指南
  • Meiam.System扩展开发指南:如何快速集成阿里云短信服务等第三方接口
  • 深度解析TypeScript模块化架构:高性能滑动菜单组件的实现原理
  • 郑州12区黄金回收服务盘点,全域服务能力禹竞名奢汇遥遥领先 - 禹竞
  • 郑州合规黄金回收机构盘点,禹竞名奢汇树立行业规范标杆 - 禹竞
  • 2026年海口企业如何做GEO优化?从技术路径到行业适配的观察 - 环岛AI智推GEO系统
  • 040、Edge Impulse的EON Tuner与自动优化
  • GHelper终极指南:华硕笔记本性能优化神器,告别奥创中心卡顿
  • 2026年长沙市最具性价比 黄金回收白银回收铂金回收店铺实力排行榜TOP5;彩金+金条+银条首饰回收靠谱门店及联系方式推荐 - 前途无量YY
  • 社交网络水军检测:行为分析与深度强化学习实践
  • HEIF Utility:Windows上免费处理iPhone照片的终极方案
  • 2026年长治市最具性价比 黄金回收白银回收铂金回收店铺实力排行榜TOP5;彩金+金条+银条首饰回收靠谱门店及联系方式推荐 - 前途无量YY
  • 告别软件模拟!STC32F的硬件三角函数库怎么用?一个PID温控代码带你上手
  • 告别手动复制粘贴!用ArcGIS Pro二次开发批量生成界址点Excel表(附完整C#源码)