📅  最后修改于: 2023-12-03 15:22:08.341000             🧑  作者: Mango
问题描述:给定长度为n的非空整数数组,找到使所有数组元素相等所需的最少操作次数,其中一次操作是将n-1个元素增加1。
例如: 输入: [1,2,3]
输出: 3
解释:至少需要执行三次操作,将数组变为 [3, 3, 3]。
我们首先可以先找出这个数组中的最小值,然后计算出每一个元素与最小值之间的差值,将这些差值累加起来就是所要的最少操作次数。
例如:给定数组 [1, 2, 3]
数组的最小值为1,那么2和3分别要进行1次操作才能和最小值相等。所以,最少操作次数就是1+1=2。
具体实现,我们可以使用遍历数组的方式来找到最小值,然后再计算每一个元素与最小值之间的差值的和。时间复杂度为O(n)。
def minMoves(nums):
"""
:type nums: List[int]
:rtype: int
"""
min_num = min(nums)
return sum([num - min_num for num in nums])
本题的解法十分简单,只需要找到数组中的最小值,然后计算每一个元素与最小值之间的差值,将这些差值累加起来就是所要的最少操作次数。