[leetcode] 453. Minimum Moves to Equal Array Elements

网友投稿 266 2022-08-27

[leetcode] 453. Minimum Moves to Equal Array Elements

Description

Given a non-empty integer array of size n, find the minimum number of moves required to make all array elements equal, where a move is incrementing n - 1 elements by 1.

Example:

Input:[1,2,3]Output:3Explanation:Only three moves are needed (remember each move increments two elements):[1,2,3] => [2,3,3] => [3,4,3] => [4,4,4]

分析

题目的意思是:求一个数组的最小移动次数使得数组元素相等。

需要换一个角度来看问题,其实给n-1个数字加1,效果等同于给那个未被选中的数字减1;比如数组[1,2,3], 给除去最大值的其他数字加1,变为[2,3,3],我们全体减1,并不影响数字间相对差异,变为[1,2,2],这个结果其实就是原始数组的最大值3自减1;那么问题也可能转化为,将所有数字都减小到最小值,这样难度就大大降低了,我们只要先找到最小值,然后累加每个数跟最小值之间的差值即可.

代码

class Solution {public: int minMoves(vector& nums) { int min_val=INT_MAX; for(int num:nums){ min_val=min(min_val,num); } int sum=0; for(int num:nums){ sum+=num-min_val; } return sum; }};

参考文献

​​[LeetCode] Minimum Moves to Equal Array Elements 最少移动次数使数组元素相等​​

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:[leetcode] 23. Merge k Sorted Lists
下一篇:SaaS营销:14个关键的销售资格问题,确定正确的潜在客户!(saas销售需要了解的知识)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~