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

Leetcode 3139. Minimum Cost to Equalize Array

  • Leetcode 3139. Minimum Cost to Equalize Array
    • 1. 解题思路
    • 2. 代码实现
  • 题目链接:3139. Minimum Cost to Equalize Array

1. 解题思路

这一题是一道hard的题目,而且看了一下答出率低的离谱,就一开始被吓到了,不过实际做了一下之后,发现用很蠢的方法也一下子过了,就很懵逼……

首先,显然如果cost1的两倍不大于cost2,那么我们显然全部使用操作一加到最大值即可。

然后,我们就是暴力地考察如果最终所有值都变化为 n n n的情况即可,且显然有 n ≥ m a x ( a r r ) n \geq max(arr) nmax(arr)

而关于如何求将数组变为一个具体的n时的情况,此时我们只需要算出所有差值然后进行排序,如果最大值不多于总和的一半,那么我们总可以使用操作二来完成几乎所有的操作,至多只需要执行一次操作一;如果最大值多于综合的一半,那么我们就只能使用操作一来填平其中不够的部分了。

2. 代码实现

给出python代码实现如下:

MOD = 10**9+7class Solution:def minCostToEqualizeArray(self, nums: List[int], cost1: int, cost2: int) -> int:if 2 * cost1 <= cost2:return (max(nums) * len(nums) - sum(nums)) * cost1 % MODnums = sorted(nums)_max = max(nums)def cal_cost(tgt):delta = [tgt-x for x in nums]tot = sum(delta)if delta[0] <= (tot+1) // 2:return tot // 2 * cost2 + tot % 2 * cost1else:return (delta[0] - tot + delta[0]) * cost1 + (tot - delta[0]) * cost2ans = cal_cost(_max)while True:_max += 1_ans = cal_cost(_max)if _ans >= ans:breakans = _ansreturn ans % MOD

提交代码评测得到:耗时1841ms,占用内存31.5MB。

http://www.lryc.cn/news/341942.html

相关文章:

  • 【element-ui】el-table横向滚动后,通过is-scrolling-left获取滚动高度失效的问题
  • JAVA中的日期
  • 一起了解开源自定义表单的优势表现
  • 体育老师工资高吗,奖金有吗
  • Linux驱动开发——(十一)INPUT子系统
  • 大数据毕业设计Python+Django旅游景点评论数据采集分析可视化系统 NLP情感分析 LDA主题分析 bayes分类 旅游爬虫 旅游景点评论爬虫 机器学习 深度学习 人工智能 计算机毕业设计
  • FSNotes for Mac v6.7.1中文激活版:强大的笔记管理工具
  • 课程34:Windows Docker部署.Net Core项目
  • 分布式与一致性协议之ZAB协议(四)
  • 在M1芯片安装鸿蒙闪退解决方法
  • Linux基础-socket详解、TCP/UDP
  • 【菜单下拉效果】基于jquery实现二级菜单下拉效果(附完整源码下载)
  • 如何使用resource-counter统计跨Amazon区域的不同类型资源数量
  • nextTick的作用与原理
  • mybatis工程需要的pom.xml,以及@Data 、@BeforeEach、@AfterEach 的使用,简化mybatis
  • 微信小程序demo-----制作文章专栏
  • Linux migrate_type初步探索
  • i.MX 6ULL 裸机 IAR 环境安装
  • cmake进阶:文件操作
  • 在UI界面中播放视频_unity基础开发教程
  • TypeScipt 联合类型 | 号的使用
  • MATLAB 变换
  • 【005_音频开发_基础篇_ALSA_Codec_驱动-MA120x0P功放】
  • 2、​​​​​​​FreeCAD模块与核心架构总结
  • MySQL为什么默认引擎是InnoDB?
  • K8s: Helm搭建mongodb集群(1)
  • 应用分层和企业规范
  • Flutter笔记:Widgets Easier组件库(1)使用各式边框
  • OpenHarmony实战开发-上传文件
  • 外贸企业邮箱是什么?做外贸企业邮箱哪个好?