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                # 结果

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容