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

就是這麼簡單!!!

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