📅  最后修改于: 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)。
该解法具有较高的执行效率和占用较少的存储空间。