码迷,mamicode.com
首页 > 其他好文 > 详细

453 Minimum Moves to Equal Array Elements

时间:2019-04-20 00:20:08      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:lib   就是   gap   span   ali   tps   个数   怎么   多少   

https://leetcode.com/problems/minimum-moves-to-equal-array-elements/?tab=Description

<Math>

给你一个array,每次操作可以使一个数不变,同时array中其余的数各+1。最少需要操作多少次可以让array里的值全都相等。

 

两种想法,殊途同归

想法一:想让所有的元素都相等,那肯定要考虑怎么样才能让最小的和最大的相等,于是最大的原地不动,其他的元素+1,一直做max-min次后,最大的和最小的相等。这时,最小的依然是最小的,最大的也变成最小的,以前第二大的变成现在最大的了。所以答案其实就是把最小项到各个数字的gap加起来。相同的项毫无影响,他兄弟怎么做,他就怎么做即可。比如说答案123那个,改成1123,也一样,1怎么做,其他1也怎么做就是了

 

想法二:其实我们并不在乎array里的数是多少,只在乎数与数之间的相对距离。于是我们想到,一个数不变,其他数都加1. 等价于这个数 -1 ,其他数都不变。每次可以使一个数-1, 需要减一多少次,才能让array相等呢?自然是每个数都跟min比一下即可。 求个和,然后减去n * min即可

453 Minimum Moves to Equal Array Elements

标签:lib   就是   gap   span   ali   tps   个数   怎么   多少   

原文地址:https://www.cnblogs.com/philipyang/p/10739507.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!