📌  相关文章
📜  使所有数组元素相等所需的最少操作(1)

📅  最后修改于: 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])
总结

本题的解法十分简单,只需要找到数组中的最小值,然后计算每一个元素与最小值之间的差值,将这些差值累加起来就是所要的最少操作次数。