Leetcode Link: 453. 最小操作次数使数组元素相等 - 力扣(LeetCode)

题目

解法一

思路: 由于本题不关心最后相等的数字是多少,因此本题中

** 对 n-1 个数加一 等价于 对 1 个数减一 **

即原问题可以等价于: 给定数组,每次对一个数字减 1,操作多少次后所有的数字都等于其中的最小值?

  • 操作后的数组中全部都为最小值,其和为 min(nums)*len(nums)
  • 操作前的数组总和为:sum(nums)
  • 得操作数为sum(nums) - min(nums)*len(nums)

题解

class Solution:
    def minMoves(self, nums: List[int]) -> int:
        return sum(nums) - min(nums)*len(nums)

启发和联系

本题的证明可以参考这里