📌  相关文章
📜  使数组的所有元素相等的最小步骤数(1)

📅  最后修改于: 2023-12-03 15:36:26.321000             🧑  作者: Mango

使数组的所有元素相等的最小步骤数

介绍

给定一个长度为 n 的非空整数数组,找到使所有数组元素相等的最小步骤数,其中一步操作定义为将任意一个元素减少 1。

例如:

输入:[1, 2, 3]

输出:3

解释:需要三个步骤才能将数组中的所有元素都变成相等的,即 [1, 1, 1]。

解法

要想让数组中所有元素相等,我们可以让每个元素都减少到和数组中最小元素相等的值。

因此,我们首先需要找到数组中的最小元素,以及数组中所有元素的和。

接着,我们可以通过计算最小元素与每个元素之间的差值的和,来求出需要减少多少次才能让所有元素相等。

代码如下:

def min_steps_to_equal_array(nums: List[int]) -> int:
    min_num = min(nums)
    sum_nums = sum(nums)
    return sum_nums - min_num * len(nums)
性能分析

该算法时间复杂度为 O(n),空间复杂度为 O(1)。

该解法具有较高的执行效率和占用较少的存储空间。