Skip to content

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))
})()