453. Minimum Moves to Equal Array Elements

xiaoxiao2021-02-28  111

class Solution(object): def minMoves(self, nums): """ :type nums: List[int] :rtype: int """ s = sum(nums) minNum = min(nums) l = len(nums) m = s- minNum*l return m

解释: let’s define sum as the sum of all the numbers, before any moves; minNum as the min number int the list; n is the length of the list;

After, say m moves, we get all the numbers as x , and we will get the following equation sum + m * (n - 1) = x * n and actually,

x = minNum + m and finally, we will get

sum - minNum * n = m So, it is clear and easy now.

why x=minNum+m: Before all elements reach to the same value, every time (n-1) elements add one meaning only one element remains the same, which of cause should be the max value( should be different from min value, otherwise they have reached the same value) of the array. So, with that being said, every time doing add one for (n-1) operation, the min value +1. If it takes m moves to reach x, then x=minNum+m. Also, I have a similar post, my post, you can take a look if you are still interested.

转载请注明原文地址: https://www.6miu.com/read-41263.html

最新回复(0)