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

今天在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

就是这么简单!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章