leetcode题刷250天(77)——462. 最少移动次数使数组元素相等 II(脑筋急转弯)

给你一个长度为 n 的整数数组 nums ,
返回使所有数组元素相等需要的最少移动数。
在一步操作中,你可以使数组中的一个元素加 1 或者减 1 。

解题思路:
其实问题简单化, 假设有三个人在一条线上,AC在两端,B在中间
若取中位数移动数就是C-A
如果取平均值,B如果不是平均值,那么B需要走到平均值 且 AC走的路还是C-A 总移动数为C-A+ |avg-B|
。。。
人再多的时候,多的只是两边的人,中间的ABC已经站到指定位置了,思路同上

class Solution(object):
    def minMoves2(self, nums):
        nums.sort()
        count = 0
        mid = nums[len(nums)//2]

        return sum([abs(x-mid) for x in nums])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值