leetcode_453

Minimum Moves to Equal Array Elements

题目戳这

题意

给定一个数组,假设数组长度为n,每一步要将数组中n-1个数字加1,问最小的步数,使得数组中的所有数字为同一个值。

解法

这道题目如果正面去想不太好想,我们可以反着来思考。每一步将n-1个数字加1,我们可以等效为每一步将剩下的那一个数字减一,那么假设数组中最小的元素值为mmin,则最小的步数就是将除最小值以外的其他值减为mmin。

代码

1
2
3
4
5
6
7
8
9
10
11
12
class Solution(object):
def minMoves(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
mmin = min(nums)
ans = 0
for x in nums:
ans += (x-mmin)
return ans