尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
最小操作次数使数组元素相等【力扣LeetCode  每日一题】
453. 最小操作次数使数组元素相等网页链接力扣LeetCode力扣LeetCode 每日一题完成每日打卡即可获得力扣积分。获得相应数量的积分能在【力扣商店】换取相应奖品助力每日有题做丰盈积分日益多题目描述给你一个长度为n的整数数组每次操作将会使n - 1个元素增加1。返回让数组所有元素相等的最小操作次数。输入描述一个长度为n的整数数组nums。输出描述返回让数组所有元素相等的最小操作次数。示例示例 1输入nums [1,2,3]输出3解释只需要3 33次操作注意每次操作会增加两个元素的值[1,2,3] [2,3,3] [3,4,3] [4,4,4]示例 2输入nums [1,1,1]输出0数据范围n nums.length1 ≤ nums.length ≤ 10 5 1 \le \text{nums.length} \le 10^51≤nums.length≤105− 10 9 ≤ nums [ i ] ≤ 10 9 -10^9 \le \text{nums}[i] \le 10^9−109≤nums[i]≤109答案保证符合32-bit整数解题思路本题是操作等价转化 相对差值求和问题。每次操作会把n - 1个元素同时加1直接模拟操作次数会很多也不方便。关键在于把“增加大多数元素”转化为“减少单个元素”。1. 操作等价转化每次操作选择n - 1个元素加1等价于所有元素都加1再让未被选中的那个元素减1。由于“所有元素同时加1”不会改变任意两个元素之间的相对差值也不会影响最终它们是否相等因此可以忽略这个整体加1的部分。于是原操作等价于每次选择数组中的一个元素将其减1。目标仍然是让所有元素相等。2. 最终相等值只能是最小值如果每次只能把某个元素减1那么元素只能变小不能变大。因此最终所有元素相等时目标值不能大于数组中的最小值否则原本的最小值无法通过“减1”达到更大的值。所以最终相等值必然就是数组的最小值m min ⁡ ( n u m s ) m \min(nums)mmin(nums)3. 计算最少操作次数对于任意元素nums[i]要把它降到最小值m需要的操作次数为n u m s [ i ] − m nums[i] - mnums[i]−m每个元素都必须至少降到m且降到m后不能再继续减小否则会小于目标值。因此总操作次数为∑ i 0 n − 1 ( n u m s [ i ] − m ) \sum_{i0}^{n-1} \bigl(nums[i] - m\bigr)i0∑n−1​(nums[i]−m)这正是代码中intm*min_element(a.begin(),a.end());intr0;for(intx:a){rx-m;}returnr;所计算的内容。4. 示例验证对于nums [1,2,3]最小值为1答案为( 1 − 1 ) ( 2 − 1 ) ( 3 − 1 ) 0 1 2 3 (1-1)(2-1)(3-1)0123(1−1)(2−1)(3−1)0123与示例输出一致。对于nums [1,1,1]最小值为1答案为0 0 0 0 00000000也与示例一致。5. 复杂度分析求最小值O ( n ) O(n)O(n)遍历数组累加差值O ( n ) O(n)O(n)总时间复杂度为O ( n ) O(n)O(n)只使用常数个额外变量空间复杂度为O ( 1 ) O(1)O(1)。总结每次让n - 1个元素加1等价于让一个元素减1。由于元素只能减小最终所有元素只能变成数组的最小值。因此最少操作次数就是所有元素与最小值之差的总和直接一次遍历累加即可。代码内容classSolution{public:intminMoves(vectorinta){intm*min_element(a.begin(),a.end());intr0;for(intx:a){rx-m;}returnr;}};
RELATED

相关推荐

备份问题:覆盖保存前怎样留一份可回退副本?新手一步步做

备份问题:覆盖保存前怎样留一份可回退副本?新手一步步做

大家好,我是 SiKi老师。改完存档或导出配置一点保存,文件立刻变成新内容,原来那份却找不到了。很多工具直接 write_text 覆盖原路径,中间没有副本。新手需要的不是复杂版本库,而是覆盖前先留一份带时间戳、能手动拷回去…

📅 2026/11/3 2:50:41
一句话就出的AI-PPT为什么好看不好用?

一句话就出的AI-PPT为什么好看不好用?

现在基本每家AI公司都有一个PPT生成器。 然而,不管是网页端的 AI PPT 工具,还是装在 Trae 里的本地脚本,生成出来的 PPT 总有几个绕不开的毛病。排版乱,内容挤在一起,字体大小调不了多少,模板只能用系统自带…

📅 2026/11/3 2:50:41
YOLO小目标检测优化技术与工程实践

YOLO小目标检测优化技术与工程实践

YOLO小目标检测优化技术与工程实践 小目标检测(Small Object Detection)是目标检测落地过程中最容易被低估、也最考验工程功力的环节。在通用基准数据集上,一个训练良好的 YOLO(You Only Look Once)模型往往能给出漂亮的平均精度(Average Precision,AP),但一旦换到无…

📅 2026/11/3 2:50:41
MORE NEWS

更多资讯

📰

分布式ID生成器CosID原理与ShardingSphere集成实践

1. 分布式主键生成的核心挑战与行业现状在分布式系统中,主键生成一直是个棘手的问题。传统单机数据库的自增ID在分布式环境下会面临严重的性能瓶颈和可用性问题。我见过太多团队在这个问题上栽跟头——有的因为ID冲突导致数据混乱,有的因为生成速度跟不上…

📰

智能Web IDE架构设计与AI编码实践

1. 项目概述:为什么我们需要智能化的Web IDE?2008年Cloud9首次向世界展示Web IDE的可能性时,没人能想到十几年后这类工具会成为开发者日常。而今天,当AI开始重构整个软件开发流程,传统Web IDE又面临新的变革窗口。小熊…

📰

跑腿经济崛起:商业模式、技术趋势与实操指南

1. 跑腿经济崛起背后的商业逻辑最近两年,我观察到身边越来越多人开始利用业余时间从事跑腿服务。从最初帮忙代购奶茶、代排队,到现在已经发展出专业化的同城即时配送网络。这种看似简单的商业模式,实际上正在重构城市服务的毛细血管。跑腿服务…

📰

软件模拟IIC驱动ADXL345三轴加速度计与计步算法实现

简介:这份资源面向嵌入式开发初学者与需要快速接入三轴加速度传感器的工程师,提供ADXL345驱动代码的完整实现与知识点梳理,可用于运动检测、跌倒检测与计步等场景的二次开发。压缩包内共1个doc文件,约63KB,以文档形式集…

📰

高校水电表缴费系统设计与微服务架构实践

1. 项目背景与选题价值高校水电表缴费系统这个选题源于我在研究生期间担任宿舍楼长的实际经历。每次月底统计各寝室水电用量时,总能看到楼管阿姨抱着一摞纸质表格挨个寝室敲门抄表,然后再手工计算费用。这种传统方式不仅效率低下,还经常出现数…

📰

Redis核心命令详解与性能优化实践

1. Redis命令概述Redis作为当今最流行的内存数据库之一,其命令体系是开发者必须掌握的核心技能。我在实际项目中使用Redis已有7年时间,从简单的缓存场景到复杂的分布式系统,Redis命令的灵活运用始终是关键。不同于传统关系型数据库的SQL语法&…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬