【LeetCode 简单题】103-最小移动次数使数组元素相等

声明:

今天是第103道题。给定一个长度为 n 的非空整数数组,找到让数组所有元素相等的最小移动次数。每次移动可以使 n - 1 个元素增加 1。以下所有代码经过楼主验证都能在LeetCode上执行成功,代码也是借鉴别人的,在文末会附上参考的博客链接,如果侵犯了博主的相关权益,请联系我删除

(手动比心ღ( ´・ᴗ・` ))

正文

题目:给定一个长度为 n 的非空整数数组,找到让数组所有元素相等的最小移动次数。每次移动可以使 n - 1 个元素增加 1。

示例:

输入:
[1,2,3]

输出:
3

解释:
只需要3次移动(注意每次移动会增加两个元素的值):

[1,2,3]  =>  [2,3,3]  =>  [3,4,3]  =>  [4,4,4]

解法1。把题目转化成所有元素减去nums最小值的累加和,代码如下。

执行用时: 96 ms, 在Minimum Moves to Equal Array Elements的Python提交中击败了12.96% 的用户

class Solution(object):
    def minMoves(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        res = 0
        min_ele = nums.sort()[0]
        for i in nums:
            res += i-min_ele
        return res

        # 上述过程可以简化成下面这一行代码
        return sum(nums) - len(nums)*min(nums)

        # 秀一波匿名函数lambda和map操作
        return sum(map(lambda x:x-min_ele,nums))

结尾

解法1:https://blog.csdn.net/hy971216/article/details/80782584

你可能感兴趣的:(LeetCode,简单,Easy)