/**
* 453. Minimum Moves to Equal Array Elements
* https://leetcode.com/problems/minimum-moves-to-equal-array-elements/
* https://www.cnblogs.com/grandyang/p/6053827.html
*
* Given a non-empty integer array of size n, find the minimum number of moves required to make all array elements equal,
* where a move is incrementing n - 1 elements by 1.
Example:
Input:
[1,2,3]
Output:
3
Explanation:
Only three moves are needed (remember each move increments two elements):
[1,2,3] => [2,3,3] => [3,4,3] => [4,4,4]
* */
class Solution {
fun minMoves(nums: IntArray): Int {
var result = 0
//find out the smallest one
val min = nums.min()
//accumulative the different between each num and the small one
for (num in nums) {
result += (num - min!!)
}
return result
}
}