# 最小移动次数使数组元素相等

给定一个长度为 n 的非空整数数组,找到让数组所有元素相等的最小移动次数。每次移动可以使 n - 1 个元素增加 1。

示例:

输入:
[1,2,3]

输出:
3

解释:
只需要3次移动(注意每次移动会增加两个元素的值):

[1,2,3]  =>  [2,3,3]  =>  [3,4,3]  =>  [4,4,4]

# 解(1):

var minMoves = function (nums) {
    // 移动次数为所有值减去最小值的和
    let min = Math.min.apply(null, nums)
    let count = 0
    for (let i = 0; i < nums.length; i++) {
        count += nums[i] - min
    }
    return count
};

# 解(2):

var minMoves = function (nums) {
    // 移动次数为所有值减去最小值的和
    let min = Math.min(...nums)
    return nums.map(a => a - min).reduce((a, b) => (a + b))
};
Last Updated: 4/3/2020, 6:21:54 PM