453. 最小操作次数使数组元素相等
js
;(function () {
/**
* 453. 最小操作次数使数组元素相等
* 给你一个长度为 n 的整数数组,每次操作将会使 n - 1 个元素增加 1 。返回让数组所有元素相等的最小操作次数。
*
* 输入:nums = [1,2,3]
* 输出:3
* 解释:
* 只需要3次操作(注意每次操作会增加两个元素的值):
* [1,2,3] => [2,3,3] => [3,4,3] => [4,4,4]
*
* 输入:nums = [1,1,1]
* 输出:0
*
*/
function minMoves(nums: number[]): number {
// 方法一:数学(官网提供)--- 逆向思维
// 每次操作既可以理解为使 n-1 个元素增加 1,也可以理解使 1 个元素减少 1。
// 累加每个元素与数组中元素最小值的差
let min: number = Math.min(...nums)
let total: number = 0
for (let i = 0; i < nums.length; i++) {
total += nums[i] - min
}
return total
}
const nums = [1, 2, 3]
console.log(minMoves(nums))
})()