今天在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
就是這麼簡單!!!