/**
 * https://leetcode.com/problems/minimum-moves-to-equal-array-elements/description/
 * Difficulty:Easy
 *
 * 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]
 *
 */

/**
 *
 * reverse thinking!
 *
 * Adding 1 to n - 1 elements is the same as subtracting 1 from one element
 *
 * goal of making the elements in the array equal.
 * So, best way to do this is make all the elements in the array equal to the min element.
 */

/**
 * @param {number[]} nums
 * @return {number}
 */
var minMoves = function (nums) {

    var min = nums[0];
    for (var i = 1; i < nums.length; i++) {
        min = Math.min(min, nums[i]);
    }

    var ret = 0;
    for (i = 0; i < nums.length; i++) {
        ret += nums[i] - min;
    }
    return ret;

};

console.log(minMoves([1, 999, 1000]));