题目
难度:★☆☆☆☆
类型:数组
给定一个长度为 n 的非空整数数组,找到让数组所有元素相等的最小移动次数。每次移动可以使 n - 1 个元素增加 1。
示例
输入:
[1,2,3]
输出:
3
解释:
只需要3次移动(注意每次移动会增加两个元素的值):
[1,2,3] => [2,3,3] => [3,4,3] => [4,4,4]
解答
数组共有n个数字,每次给n-1个数字加一,在差值上实际上相当于每次给一个数字减一,问题转换为需要数组中所有的数一共最少需要减去多少个一才能使所有数字相等,这样问题就很简单,数组中所有数字与最小数字差值的和即为结果,最终数组中的每个数都是最小数字。
class Solution(object):
def minMoves(self, nums):
s = 0 # 各个元素与最小值的差值
m = min(nums) # 最小值
for n in nums: # 遍历数组
s += n-m # 累加
return s # 结果
如有疑问或建议,欢迎评论区留言~