当前位置: 首页 > 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.cnnetsun.cn/news/2869665.html

相关文章:

  • 扫码登录微信后自动回复消息的Python小工具,带会话记录和状态保存
  • 3步掌握DeepLabCut:无标记姿态估计从入门到精通 [特殊字符]
  • 大模型面试实录:23家公司22面,15家拒,7家发Offer,深度复盘大厂/初创面试避坑指南!
  • KiTTY深度解析:Windows上最强大的SSH客户端实战指南
  • 从比特币到HTTPS:用C++实战解析SHA-256在现代安全中的应用场景
  • 终极Citra模拟器黑屏修复指南:10分钟解决3DS游戏闪退问题
  • 广东工业智造大赛复赛布匹瑕疵检测Python工程包:含6种Cascade R-CNN模型、真实产线图像与完整训练推理流程
  • 猫抓浏览器扩展:三步实现网页视频音频资源一键下载的终极指南
  • Kronos金融预测模型:从零部署到生产应用的完整指南
  • WindowTop完全指南:5个核心功能让你的Windows窗口管理效率翻倍
  • MonkeyCode 与 AGPLv3:为什么我们选择最严格的开源许可证
  • 8个步骤掌握MockGPS:Android位置模拟完全指南 [特殊字符]
  • 网页版太阳系动态模拟工具:拖拽调节轨道与速度,即开即用
  • Seraphine:英雄联盟智能辅助工具如何提升你的游戏体验?
  • 微服务注册配置中心终极选型:2026指南
  • HS2-HF补丁:如何简单快速解锁Honey Select 2完整游戏体验的终极指南
  • Bootstrap Table自动刷新功能:实时数据展示的终极解决方案
  • Goldberg Steam模拟器深度解析:全面掌握游戏模拟技术实践指南
  • 百度网盘高速下载终极指南:免费开源工具快速上手
  • Fantomas版本升级指南:v7新特性与迁移策略
  • 终极指南:使用免费开源SMUDebugTool实现AMD Ryzen处理器硬件级精准控制
  • 致远OA漏洞检测终极指南:12大安全漏洞一键扫描与利用
  • Hydro OJ插件系统深度体验:从用户到贡献者,我是如何给评测机加‘Buff’的
  • palera1n深度解析:A8-A11设备iOS越狱实战指南
  • 如何在FF14高难度副本中利用Splatoon插件实现零失误导航
  • YOLOv5s/m裂缝识别实战工程:含训练代码、实测数据集、预训练模型与摄像头实时检测脚本
  • 终极解决方案:如何用sguard_limit彻底解决腾讯游戏卡顿问题
  • 零基础考研英语怎么学|单词|阅读|资料已整理
  • 终极指南:如何3步掌握智能批量评价技巧,告别手动评价烦恼
  • 如何用downkyi哔哩下载姬轻松获取B站8K超高清视频:终极完整指南