题目描述
给定一个长度为n的非空整数数组,找到让数组所有元素相等的最小移动次数。每次移动可以使n-1个元素增加1。
- 示例
输入: [1, 2, 3]
输出: 3
解释:只需要3次移动(注意每次移动会增加两个元素的值):[1, 2, 3] -> [2, 3, 3] -> [3, 3, 4] -> [4, 4, 4]
找规律
每次移动使n-1个元素增加1,也就是说每次移动使1个元素减少1。
def minMoves(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
min_move_count = 0
min_value = min(nums)
for nu in nums:
min_move_count += (nu-min_value)
return min_move_count
直接根据规律寻求公式进行计算,省去遍历过程。
def minMoves(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
return sum(nums) - min(nums) * len(nums)
(最近更新:2019年05月15日)
本文详细解析了如何通过算法计算让数组所有元素相等所需的最小移动次数,每次移动可使n-1个元素增加1,重点介绍了两种高效计算方法。
4690

被折叠的 条评论
为什么被折叠?



