python数组相等,453. 最小移动次数使数组元素相等(Python)

题目

难度:★☆☆☆☆

类型:数组

给定一个长度为 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 # 结果

如有疑问或建议,欢迎评论区留言~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值