您的位置:首页 > 其它

Minimum Moves to Equal Array Elements(最少移动步长使数组中元素相等)

2017-04-22 10:07 459 查看
今天在leetcode上遇到一个问题,就是如何在最小移动步数下使数组中元素相等,每次仅能移动n-1个元素,而且每次只能加1

其实这就是一个简单的数学问题,我们可以假设在m次移动后,所有元素达到相等,且相等值为val,那么,我们可以建立等式如下:

sum + m*(n-1) = val*n;(其中,sum是原始数组元素之和,n为元素个数),实际上,我们还有一个等式,那就是m步后val的值:

val = minNum + m;(其中,minNum是原始数组中最小值),因为原始数组中最小值是一直参与移动(增值)的,那么在m次移动后,val就是minNum+m,

所以,m = sum - minNum*n

就是这么简单!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Leetcode 算法 数组